MySQLの基本操作を詳しく解説(第2部)

MySQLの基本操作を詳しく解説(第2部)

序文

この記事には

1. データベースのいくつかの主要な制約
2. テーブル間の関係

制約:

主キー制約:

機能: データの妥当性と整合性を保証するために、MySQL でよく使用される制約: 主キー制約 (主キー)、一意制約 (一意)、空でない制約 (NULL ではない)、外部キー制約 (外部キー)
主キー制約: 変更されたフィールドは一意であり、空ではありません。注: テーブルには主キーを 1 つだけ設定できますが、複数のフィールドを含めることができます。方法 1: テーブルの作成時に制約を追加します。形式: フィールド名 フィールド タイプ 主キー
	方法 2: テーブルの作成時に制約領域に制約を追加します。すべてのフィールドが宣言されたら、制約領域になります。形式: 主キー (フィールド 1、フィールド 2)
		
		テーブルpk01を作成します(
			id int、
			ユーザー名varchar(20)、
			主キー (ID)
		);
		
		insert into pk01 values(1,'tom');-- 成功 insert into pk01 values(1,'tom');-- 失敗 キー 'PRIMARY' のエントリ '1' が重複しています
		insert into pk01 values(null,'tom');-- 失敗 列 'id' は null にできません
		
		テーブルpk01を作成します(
			id int 主キー、
			ユーザー名varchar(20)、
			主キー (ID)
		);-- エラー テーブルには主キーを 1 つしか持てません		
	方法3: テーブルを作成した後、テーブル構造を変更して制約を追加します。create table pk02(
			id int、
			ユーザー名varchar(20)
		);
		
		alter table pk02 主キーを追加します (フィールド名 1、フィールド名 2..)
		テーブル pk02 を変更し、主キー (id、username) を追加します。
		
		insert into pk02 values(1,'tom');-- 成功 insert into pk02 values(1,'tomcat');-- 成功 insert into pk02 values(1,'tomcat');-- 失敗

ユニーク制約

変更されたフィールドは一意であり、nullでは機能しません。方法1: テーブルの作成時に制約を追加します。形式: フィールド名 フィールドタイプ 一意
		テーブルを作成 un(
			id int ユニーク、
			ユーザー名 varchar(20) 一意
		);
		
		insert into un value(10,'tom');-- 成功 insert into un value(10,'jack');-- エラー キー 'id' のエントリ '10' が重複しています
		un value(null,'jack') に挿入します。-- 成功 un value(null,'rose') に挿入します。-- 成功		
	方法 2: テーブルの作成時に制約領域に制約を追加します。すべてのフィールドが宣言された後、制約領域は一意になります (フィールド 1、フィールド値 2...)
	方法 3: テーブルを作成した後、テーブル構造を変更して制約を追加します。 alter table table name add unique (field 1, field 2); -- ジョイントユニークを追加しました。 alter table table name add unique (field 1); -- 1 つにユニークを追加しました。 alter table table name add unique (field 2); -- 別のものにユニークを追加しました。		
		////////////////
			テーブルun01を作成(
				id int、
				ユーザー名varchar(20)
			); 
			テーブル un01 を変更し、unique(id,username) を追加します。
			insert into un01 values(1,'tom');-- 成功 insert into un01 values(1,'jack');-- 成功 insert into un01 values(1,'tom');-- 失敗 キー 'id' のエントリ '1-tom' が重複しています

非 Null 制約

機能: 変更されたフィールドは空ではありません。方法:
		テーブルnnを作成(
			id int が null ではない、
			ユーザー名varchar(20)がnullでない
		);
		
		insert into nn values(null,'tom');-- エラー列 'id' は null にできません

ケース1 1対多 – ユーザーテーブルを作成する

テーブルユーザーを作成(
	id int 主キー auto_increment,
	ユーザー名varchar(20)
);

-- 注文テーブルを作成する create table orders(
	id int 主キー auto_increment,
	合計価格2倍、
	ユーザーID int
);

データの有効性と整合性を確保するには、制約 (外部キー制約) を追加します。
マルチテーブルの片側に外部キー制約を追加する

形式:
alter table 複数のテーブル名 外部キー (外部キー名) を追加 1 つのテーブル名 (主キー) を参照します。

例えば:
テーブルordersを変更し、外部キー(user_id)にuser(id)への参照を追加します。

外部キー制約を追加すると、次の機能が利用できるようになります。

  1. 1. スレーブテーブルで参照されているデータはマスターテーブルでは削除できません
  2. 2. メインテーブルに存在しないデータはテーブルから追加できません

開発における 1 対多の処理:
複数のテーブルに外部キーを追加します。名前は通常、メインの table_id の名前であり、フィールド タイプは通常、メイン テーブルの主キーのタイプと一致します。
データの有効性と整合性を確保するために、複数のテーブルの外部キーに外部キー制約を追加できます。

ケース 2 1対多 – ユーザーテーブルの作成

-- 製品テーブルを作成する create table product(
	id int 主キー auto_increment,
	名前varchar(20),
	価格2倍
);

-- 中間テーブルを作成する create table orderitem(
	oid int、
	pid 整数
);

– 外部キー制約を追加する
テーブル orderitem を変更し、外部キー (oid) に orders (id) 参照を追加します。
テーブル orderitem を変更し、外部キー (pid) と product (id) を参照するキーを追加します。

開発における多対多の処理:
2 つのテーブルの主キーを格納するための中間テーブルを導入します。通常、これらの 2 つのフィールドは共同主キーとして設定され、多対多の関係を 2 つの 1 対多の関係に分割できます。データの有効性と整合性を確保するために、中間テーブルに 2 つの外部キー制約を追加する必要があります。

ケース3 - 複数テーブルクエリ

デカルト積:

複数のテーブルの無条件の結合クエリ。意味がありません。 select a.*,b.* from a,b;

内部結合

	形式 1: 明示的な内部結合 select a.*,b.* from a [inner] join b on ab join condition 形式 2: 暗黙的な内部結合 select a.*,b.* from a,b where ab join condition

外部結合

	左外部結合:
	結合条件で左[外部]結合bからa.*,b.*を選択します。
	平均:
		まず、結合の左側のテーブル (a) のすべてのデータを表示し、次に結合の右側のテーブル (b) を条件に基づいてクエリします。条件が満たされている場合は表示します。満たされていない場合は、null 値として表示します。
  右外部結合:
	b から a.*,b.* を右 [外側] から選択し、接続条件で a を結合します。
	平均:
		まず結合の右側のテーブル (a) のすべてのデータを表示し、次に結合の左側のテーブル (b) を条件に基づいてクエリします。条件が満たされている場合はデータが表示され、そうでない場合は null 値として表示されます。
  サブクエリ:
1 つのクエリは別のクエリに依存します。

以上が、私がご紹介したMySQLの基本操作の詳細な説明です。お役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、すぐに返信させていただきます。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • 基本的なMySQL操作
  • mysql 基本操作文コマンドの詳細な説明
  • MySQL でのサブクエリとスカラーサブクエリの使用に関する基本操作チュートリアル
  • MySQLデータベース操作の基本コマンド
  • MySQL入門(I)データテーブルとデータベースの基本操作
  • MySQLの基本操作ステートメントの概要
  • MySQLテーブルの基本操作の詳細な例
  • MySQL 学習ノート 2: 基本的なデータベース操作 (作成、削除、表示)
  • MySQL 学習ノート 3: 基本的なテーブル操作の紹介
  • MySQL初心者のための基本操作のまとめ

<<:  vue.js ルーターのネストされたルートの実例

>>:  Linux で圧縮ファイルの内容を表示する 10 の方法 (要約)

推薦する

Vueコンポーネントの作成方法と使用方法を説明する記事

目次1. コンポーネントとは何ですか? 2. グローバルコンポーネントを作成する方法1 1. Vue...

ページ要素の絶対位置と相対位置に関するある程度の理解

今日から、定期的にちょっとした豆知識を整理していきます。簡単なものもあるかもしれませんが、どれも役に...

HTML 選択オプション デフォルトの選択方法

オプションに属性 selected = "selected" を追加すると、それ...

CSS 完全な視差スクロール効果

1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...

効率を向上できる Linux コマンドエイリアス 10 個のまとめ

序文Linux 環境で作業するエンジニアは、これらの面倒な命令とパラメータのコマンドラインにきっと驚...

Docker を使用して Nginx+Flask+Mongo アプリケーションをデプロイする

サーバーにはNginx、データベースサポートにはMongo、Python言語のWebフレームワークに...

dockerでopenGaussデータベースを構成する方法の詳細な説明

Windowsユーザー向けDocker で openGauss を使用するopenGaussイメージ...

mysql 8.0.19 win10 クイックインストールチュートリアル

このチュートリアルでは、参考までにMySQL 8.0.19のインストールチュートリアルを共有します。...

SpringbootはDockerデプロイメントを統合し、Dockerイメージを構築する2つの方法を実装します。

Docker は、あらゆるアプリケーション用の軽量でポータブルな自己完結型コンテナーを簡単に作成で...

Linux で仮想コンソール セッションをロックする方法

共有システムで作業しているときは、他のユーザーが自分のコンソールを覗き込んで、自分が何をしているか見...

JavaScript でオブザーバー パターンを実装する方法

目次概要オブザーバーパターンの応用シナリオオブザーバーパターンの実装要約する概要オブザーバー パター...

ECMAScriptにおけるプリミティブ値と参照値の詳しい説明

目次序文動的プロパティとは何ですか?値のコピー値の種類を決定する要約する序文これは JavaScri...

Vueバスの簡単な使い方

Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...

Docker Swarm クラスタ管理の使用と原理の分析

Swarm クラスター管理導入Docker Swarm は Docker 用のクラスター管理ツールで...

MySQLデータベースに画像を保存するいくつかの方法

通常、ユーザーがアップロードした写真はデータベースに保存する必要があります。一般的に、解決策は 2 ...