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 スタイルで一般的なグラフィック効果を示すサンプルコード

一般的な基本グラフィックと私が遭遇するいくつかの小さなアイコンについて簡単に説明します。以下は CS...

Dockerは終了状態で起動します

docker run後、ステータスは常にExitedになります解決:パラメータを追加: -it do...

MySql 8.0.11 のインストールと設定のチュートリアル

公式ウェブサイトアドレス: https://dev.mysql.com/downloads/mysq...

MySql のクラッシュとサービスの起動失敗の解決策

私は長い間PHPに触れてきましたが、インストール環境は非常に不慣れです。多くの問題に遭遇しました。B...

MySQLの整数データ型tinyintの詳細な説明

目次1.1Tinyint型の説明1.2 練習環境の説明1.3 未署名属性の追加1.3.1 SQLモー...

CSS における z-index: 0 と z-index: auto の違い

最近、スタック コンテキストについて学習しています。学習の過程で、z-index が 0 の場合と ...

Dockerのデフォルトネットワークセグメントを変更する実装方法の分析

背景同社のサーバーはすべて Alibaba Cloud ECS ホストを購入しています。デフォルトの...

MySQL 数千万のビッグデータに対するSQLクエリ最適化の知識ポイントのまとめ

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

Dockerイメージの作成とプロジェクト全体のワンクリックパッケージングとデプロイ

一般的な Dockerfile 命令の紹介命令説明するから新しいイメージが構築される基となるイメージ...

複数サーバーの負荷分散を実現するためのNginx構成

Nginx ロード バランシング サーバー: IP: 192.168.0.4 (Nginx-Serv...

Linux システムでのルート ディレクトリ拡張の概要

1. Linuxディスクの状態を確認する df -lh lsblkコマンドは、使用可能なすべてのブロ...

Linux 仮想マシンの IP アドレスを変更し、ゲートウェイを確認し、ネットワーク環境を構成する方法に関するチュートリアル

仮想マシンの IP アドレスを変更します。 次のインターフェイスに入り、サブネット IP を直接変更...

CSS3 フリップカード番号サンプルコード

今日会社から課題をもらったのですが、効果図は以下のとおりです。 どのような効果を実現したいかは特に決...

Taobao の商品画像切り替え効果を実現する JavaScript

JavaScriptの服装アルバム切り替え効果(Taobao商品画像切り替えに似ています)、参考ま...