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

推薦する

Nexusプライベートサーバー構築原理とチュートリアル分析

1つ。 Nexus プライベート サーバーを構築する理由は何ですか?社内の開発メンバーは全員外部ネッ...

MySQL パーティション関数の詳細な説明と例の分析

まず、データベース パーティショニングとは何でしょうか?以前、MySQL のテーブル パーティショニ...

Vue 親コンポーネントが子コンポーネント関数の実装を呼び出す

Vue親コンポーネントは子コンポーネントの関数を呼び出す親コンポーネントはイベントを通じて子コンポー...

MySQL 5.7 のルートパスワードログイン問題の解決策

前回の記事でMySQLサービスが起動しない問題が解決したと分かった後、パスワードなしでrootユーザ...

MySQL DML言語操作例

追加説明、外部キー: 外部キーを使用しないでください。すべての外部キーの概念はアプリケーション層で解...

Linux リモート開発に vs2019 を使用する方法

通常、Linux プログラムを開発する場合、次の 2 つのオプションがあります。 Linux上で直接...

Redis イメージの Docker インストールと設定手順

目次序文環境インストールMySQLコンテナを作成して起動する落とし穴を避けるための注意MySQLコン...

WangEditor リッチ テキスト コンポーネントを Angular でカプセル化する方法

リッチ テキスト コンポーネントは、Web プログラムで、特にブログやフォーラムなどの Web サイ...

Linux システムに Spring Boot アプリケーションをインストールするための詳細なチュートリアル

Unix/Linux サービスsystemd サービス操作プロセス1. JDKがインストールされたC...

Vueでスワイパープラグインを使用する際の問題を解決する

デモを作成するときにこのプラグインを使用していくつか問題が発生したため、プラグインの使用方法といくつ...

JavaScript の instanceof メソッドの手動実装

1. instanceofの使用法instanceof演算子は、コンストラクター関数のprototy...

CentOS 8 / RHEL 8 に VirtualBox 6.0 をインストールするための詳細なチュートリアル

VirtualBox は、技術者が異なる種類の複数の仮想マシン (VM) を同時に実行できるようにす...

iframe を更新する 3 つの方法

コードをコピーコードは次のとおりです。 <iframe src="1.htm&quo...

HTMLテキストオーバーフローの2つの一般的な解決策は省略記号を表示することです

方法1: CSSオーバーフロー省略を使用して解決する解決策は次のとおりです。 CSSコード: ディス...

HTML で vue-router を使用するサンプル コード

vue と vue-router の紹介 <script src="https://...