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

推薦する

docker pullがリセットされる問題を解決する

この記事では、docker pull がリセットされる問題を解決する方法を紹介し、皆さんと共有します...

Centos7 環境でバイナリ インストール パッケージから mysql5.6 をインストールする方法の詳細な説明

この記事では、centos7 環境でバイナリ インストール パッケージを使用して mysql5.6 ...

Dockerfile テキストファイルの使用例の分析

Dockerfile は、イメージをビルドするために使用されるテキスト ファイルです。テキスト コン...

MySQL準備原理の詳細な説明

準備のメリットPrepare SQL が生成される理由。まず、MySQL サーバー上で SQL を実...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...

Mysql データベースの高度なビュー、トランザクション、インデックス、自己接続、ユーザー管理の例の分析の使用

この記事では、ビュー、トランザクション、インデックス、自己接続、ユーザー管理など、MySQL データ...

MySQL COUNT関数の使用と最適化

目次COUNT 関数は何をするのですか? MyISAMの「魔法」シンプルなCOUNT最適化近似値を使...

VUEは底部吸引ボタンを実装

この記事では、VUEの具体的なコードを共有して、下部吸引ボタンを実装する例を紹介します。具体的な内容...

MySQL マルチテーブルクエリの詳細な説明

よく食べて十分に休息を取るというのは簡単なことのように思えますが、実際に実行するのはそれほど簡単では...

MySQL マスタースレーブレプリケーションプロセスの詳細な説明

1. マスタースレーブレプリケーションとは何ですか?マスター データベースの DDL および DML...

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても...

HTMLでキーワードを強調表示するのに最適なソリューション

最近、プロジェクトに取り組んでいるときに、Web ページ上のキーワードを強調表示する機能に遭遇しまし...

Dockerfile を使用して nginx イメージを構築する例

Dockerfile の紹介Docker は、Dockerfile の内容を読み取ってイメージを自動...