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

推薦する

React Contextの理解と応用についてお話ししましょう

目次序文React Context の初見コンテキストの使い方コンテキストを直接取得できるいくつかの...

MySQL接続がハングする理由の詳細な説明

目次1. 背景建築問題現象2. 分析プロセス接続プール不安に陥る雲を晴らして光を見よう3. 解決策I...

Vue ミックスインの使用方法とオプションのマージの詳細な説明

目次1. コンポーネントでの使用2. オプションのマージ要約する1. コンポーネントでの使用Mixi...

要素動的ルーティングブレッドクラムの実装例

マスターするには: localStorage、コンポーネントのカプセル化えーと、GIF に変換したビ...

Vue3は独自のページングコンポーネントをカプセル化します

この記事の例では、vue3 が独自のページングコンポーネントをカプセル化する具体的なコードを参考まで...

iOS スタイルの選択ボックスの開閉機能を実装するための純粋な CSS

1 効果デモアドレス: https://www.albertyy.com/2020/7/check...

HTMLのposition属性の使い方(4種類)の詳しい説明

位置の 4 つのプロパティ値は次のとおりです。 1.相対的な2.絶対3.修正4.静的これら 4 つの...

MySQL スロークエリログの有効化と設定

導入MySQL スロー クエリ ログは、問題のある SQL ステートメントのトラブルシューティングや...

Vue computedのキャッシュ実装原理の詳細な説明

目次計算結果を初期化する依存関係の収集アップデートを配布する総括するこの記事では、計算された初期化と...

MySQL 8.0 エラー サーバーがクライアントに不明な認証方法を要求しました 解決策

最新バージョンのMySQL 8.0.11をインストールした後、ユーザーを作成して認証します。認証され...

Ubuntu 16.04/18.04 に Pycharm と Ipython をインストールするチュートリアル

Ubuntu 18.04の場合1. sudo apt install python 。コマンドライン...

CSSスタイルシートを効率的に使用するためのヒント: スタイルシートの力を最大限に活用する

インターネット経済の継続的な発展に伴い、インターネット上の専門ウェブサイト、公共サービスウェブサイト...

Zabbix動的実行監視収集スクリプトの実装原理

Zabbix カスタム スクリプトを使用して監視データを収集する場合、通常、次の問題が発生します。サ...

JSを使用して画像を効果的に圧縮する方法

目次序文変換関係具体的な実装file2DataUrl(ファイル、コールバック) file2Image...

Windows での MySQL のダウンロード、インストール、設定、使用に関するチュートリアル

MySQLの概要MySQL はリレーショナル データベース管理システムです。データベースは構造化され...