MySQL 外部キー設定方法の例

MySQL 外部キー設定方法の例

1. 外部キーの設定方法

1. MySQL では、2 つのテーブルを関連付けるために、外部キー (FOREIGN KEY) と接続 (JOIN) という 2 つの重要な機能が使用されます。テーブルを作成するときに外部キーを定義する必要があります。結合は、同じ意味を持つフィールドを介して 2 つのテーブルを接続でき、クエリ ステージで使用されます。

2. テーブル A とテーブル B という 2 つのテーブルがあり、共通のフィールド ID によって関連付けられているとします。この関連付けを R と呼びます。 id がテーブル A の主キーである場合、テーブル A はこのリレーションシップ R の主テーブルです。同様に、テーブル B はこのリレーションシップのセカンダリ テーブルです。テーブル B の id は、テーブル B がテーブル A のデータを参照するために使用するもので、外部キーと呼ばれます。したがって、外部キーは、マスター テーブルのデータを参照するために使用されるスレーブ テーブル内の共通フィールドです。

メインテーブルを作成する

テーブルdemo.importheadを作成する( 
リスト番号 INT 主キー、 
サプライヤーID INT、 
在庫番号 INT、 
インポートタイプ INT、 
インポート数量 DECIMAL(10, 3), 
インポート値 DECIMAL(10, 2), 
レコーダーINT、 
記録日付 DATETIME);

セカンダリテーブルを作成する

テーブルdemo.importdetailsを作成します( 
リスト番号 INT、 
アイテム番号 INT、 
数量 DECIMAL(10,3)、 
輸入価格 DECIMAL(10,2)、 
importvalue DECIMAL(10,2), -- 外部キー制約を定義し、外部キーフィールドと参照されるプライマリテーブルフィールドを指定します CONSTRAINT fk_importdetails_importhead 
外部キー (リスト番号) 参照 importhead (リスト番号)
);

この SQL ステートメントを実行すると、テーブルの作成時に fk_importdetails_importhead という名前の外部キー制約が定義されます。同時に、この外部キー制約のフィールド listnumber がテーブル importhead のフィールド listnumber を参照することを宣言します。

作成が完了したら、SQL ステートメントを使用してそれを表示できます。ここでは、システム情報を保存するために MySQL 組み込みデータベースを使用する必要があります。

情報スキーマ。外部キー制約に関する関連情報を表示できます。

外部キー制約が配置されているテーブルはimportdetailsで、外部キーフィールドはlistnumberです。

参照されるメイン テーブルは importhead であり、参照されるメイン テーブル フィールドは listnumber です。

このように、外部キー制約を定義することで、2 つのテーブル間の関連関係を確立しました。

3. 接続する

MySQL には、INNER JOIN と OUTER JOIN の 2 種類の結合があります。

  • 内部結合とは、クエリ結果が結合条件を満たすレコードのみを返すことを意味します。この結合方法は、より一般的に使用されます。
  • 外部結合は異なり、クエリ結果として、特定のテーブル内のすべてのレコードと、結合条件を満たす別のテーブルのレコードが返されます。

外部キーを定義するときは、次の規則に従う必要があります。

  • プライマリ テーブルは、データベース内に既に存在しているか、現在作成中のテーブルである必要があります。後者の場合、マスターテーブルとスレーブテーブルは同じテーブルです。このようなテーブルは自己参照テーブルと呼ばれ、この構造は自己参照整合性と呼ばれます。
  • 主テーブルには主キーを定義する必要があります。
  • 主キーには null 値を含めることはできませんが、外部キーには null 値が許可されます。つまり、外部キーの null 以外の値がすべて指定された主キーに表示されている限り、この外部キーの内容は正しいことになります。
  • メイン テーブルのテーブル名の後に列名または列名の組み合わせを指定します。この列または列の組み合わせは、主テーブルの主キーまたは候補キーである必要があります。
  • 外部キーの列数は、主テーブルの主キーの列数と同じである必要があります。
  • 外部キー列のデータ型は、主テーブルの主キー内の対応する列のデータ型と同じである必要があります。

要約する

これで、MySQL 外部キー設定に関するこの記事は終了です。MySQL 外部キー設定に関するより詳しい情報は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 主キー、外部キー、複合主キーを作成するための MySQL ステートメント
  • MySQL 外部キーの使用法の詳細な説明
  • MySQL 外部キーの使用法と詳細な説明
  • mysql 外部キーを作成する
  • MySQL の主キーと外部キーを理解するための簡単なチュートリアル
  • MySQL 外部キー削除問題の概要
  • MySQL の外部キー制約の詳細な説明
  • 初心者のためのMySQL外部キーの設定方法

<<:  純粋な CSS 流星群の背景サンプルコード

>>:  未来志向の総合的なウェブデザイン:プログレッシブエンハンスメント

推薦する

CSS で div にスクロールを追加し、スクロール バーを非表示にする

CSS は div にスクロールを追加し、スクロール バーを非表示にします。具体的なコードは次のとお...

Mysql のいくつかの複雑な SQL ステートメント (重複行のクエリと削除)

1. 重複行を見つける blog_user_relation a から * を選択 WHERE (...

ページングのどのページでMySQLのレコードをクエリするか

序文実際には、次のような問題に遭遇する可能性があります。特定のレコードの ID がわかっていて、その...

PSを使用して2分でxhtml+cssウェブサイトのホームページを作成します

xhtml+css のウェブサイト再構築、ウェブ標準などについては、記事が多すぎるので繰り返しません...

シンプルなドラッグ効果を実現するJavaScript

この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

テーブル適応とオーバーフローのいくつかの設定の詳細な説明

1. テーブル リセットの 2 つのプロパティ: ①border-collapse: collaps...

Vue における Vue.use() の原理と基本的な使用法

目次序文1. 例で理解する2. ソースコードを分析する3. まとめ要約する序文他の人のコンポーネント...

JavaScriptのvar let constの違いは何ですか?

目次1. 繰り返し宣言1.1 変数1.2 しましょう1.3 定数2. 可変プロモーション2.1 変数...

InnoDB テーブルの BLOB 列と TEXT 列のストレージ効率を最適化します。

まず、MySQL InnoDB エンジンのストレージ形式に関する重要なポイントをいくつか紹介します。...

CSS でのフィルタープロパティの使用に関する詳細な説明

フィルター属性は要素の視覚効果を定義しますぼかし画像にガウスぼかしを適用します。 「半径」の値は、ガ...

XHTML 入門チュートリアル: よく使われる XHTML タグ

<br />記事と同様に、Web ページにも明確な段落と重要度の異なるタイトルが必要です...

JS ES の新機能、変数分離割り当て

目次1. 配列の分離割り当て1.1 配列分離割り当てとは何ですか? 1.2 配列分離割り当てに失敗し...

背景属性の8つの属性値の詳細解説(面接の質問)

CSSの背景プロパティの値背景色背景画像背景繰り返し背景位置背景添付複合プロパティ: 背景: ba...

vue3 再帰コンポーネントカプセル化の全プロセス記録

目次序文1. 再帰コンポーネント2. 右クリックメニューコンポーネント要約する序文今日、プロジェクト...