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 の方法 (要約)

推薦する

3つの簡単な例を使ってハイパーリンクの下線を削除する方法

ハイパーリンクの下線を削除するには、スタイルシート CSS を使用する必要があります。当面は CSS...

CentOS 7.6 Telnetサービス構築プロセス(Opensshアップグレードバトル第一弾のバックアップトランスポートライン構築)

不明な点があるときはいつでも、Blog Park にアクセスして、いつでも答えやインスピレーションを...

iframeを使用してページを呼び出すとページがキャッシュされるかどうかの簡単な分析

最近、毎日変更されるページを iframe を使用して呼び出す必要があるプロジェクトがあります。その...

Vue プロジェクトは、コードの暗号化と難読化を実装するために webpack-obfuscator を設定します。

背景会社のコードは第三者に提供され、利用されます。ソースコードが完全に漏洩しないようにするには、提供...

MYSQL ロック解除とロックテーブルの紹介

MySQL ロックの概要他のデータベースと比較すると、MySQL のロック メカニズムは比較的単純で...

MySQL カーソルの定義と使用法

カーソルの作成まず、MySql でデータ テーブルを作成します。 存在しない場合はテーブルを作成 `...

Google の新しい UI から学べること (画像とテキスト)

2011 年に最も顕著なウェブサイトの変更は、一連の製品に新しいユーザー インターフェースを導入した...

Docker に共通コンポーネント (mysql、redis) をインストールする方法

Dockerはmysqlをインストールします docker search mysql 検索 dock...

docker を使用した pxc クラスターのインストールに関する詳細なチュートリアル

目次序文事前準備ディレクトリを作成するcustom.cnf を作成する証明書を作成するpxc クラス...

Windows 上で Nginx+Tomcat クラスタを実装するプロセスの分析

導入: Nginx (エンジン エックスと同じ発音) は、BSD のようなプロトコルに基づいてリリー...

MySQLデータベースインデックスの詳細な紹介

目次マインドマップシンプルな理解インデックスモデルの進化二分探索木自己バランス型二分木BツリーB+ ...

テーブルの最大幅と最小幅を設定する際の互換性の問題と解決策の詳細な説明

テーブル内の min-width と max-width プロパティの設定 <テーブル>...

プロファイルを使用して遅い SQL を分析する MySQL の詳細な説明 (グループ左結合はサブクエリよりも効率的です)

プロファイルを使用して遅いSQLを分析するMySQL の SQL パフォーマンス アナライザーの主な...

Vue + Axios リクエストインターフェース方式とパラメータ渡し方式の詳しい説明

目次1. リクエストを取得する: 2. 投稿リクエスト: 3. 拡張と補足Vue スキャフォールディ...

Windows に WSL をインストールして構成する方法

WSLとはBaidu 百科事典からの一節を引用します。 Windows Subsystem for ...