ホームページ  >  記事  >  データベース  >  テーブルの外部キー制約を作成する SQL ステートメントは何ですか?

テーブルの外部キー制約を作成する SQL ステートメントは何ですか?

青灯夜游
青灯夜游オリジナル
2021-06-11 17:22:159687ブラウズ

SQL 外部キー制約は FOREIGN KEY キーワードで指定でき、作成ステートメントは「ALTER TABLE テーブル名 ADD CONSTRAINT 外部キー名 FOREIGN KEY (列名) REFERENCES メインテーブル名 (列名);」 となります。 。

テーブルの外部キー制約を作成する SQL ステートメントは何ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約と一緒によく使用されます。関連付けられた 2 つのテーブルの場合、関連付けられたフィールドの主キーが配置されているテーブルが主テーブル (親テーブル) となり、外部キーが配置されているテーブルが副テーブル (子テーブル) になります。

外部キーは、マスター テーブルとスレーブ テーブル間の関連付けを確立し、2 つのテーブルのデータの接続を確立し、2 つのテーブルのデータの一貫性と整合性を制約するために使用されます。

テーブルの外部キー制約の作成

ALTER TABLE ステートメントの FOREIGN KEY キーワードを使用して外部キーを指定でき、外部キー制約を追加します。前提条件は、セカンダリ テーブルの外部キー カラムのデータがプライマリ テーブルの主キー カラムのデータと一致している必要があり、そうでない場合はデータがありません。

具体的な構文形式は次のとおりです。

ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);

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

  • ##メイン テーブルはデータベース内に存在する必要があります。そうでない場合は、現在作成中のテーブルです。後者の場合、マスターテーブルとスレーブテーブルは同一のテーブルとなり、このようなテーブルを自己参照テーブルと呼び、この構造を自己参照整合性と呼びます。

  • メインテーブルには主キーを定義する必要があります。

  • 主キーには null 値を含めることはできませんが、外部キーでは null 値が許可されます。つまり、外部キーのすべての非 null 値が指定された主キーに出現する限り、外部キーの内容は正しいことになります。

  • メインテーブルのテーブル名の後に列名または列名の組み合わせを指定します。この列または列の組み合わせは、メイン テーブルの主キーまたは候補キーである必要があります。

  • 外部キーの列数は、メイン テーブルの主キーの列数と同じである必要があります。

  • 外部キーの列のデータ型は、メイン テーブルの主キーの対応する列のデータ型と同じである必要があります。

例:

データ テーブル tb_emp2 を変更し、フィールド deptId を外部キーとして設定し、それをプライマリ テーブルと比較します。データテーブル tb_dept1 のキー ID 相関関係、SQL 文および実行結果を以下に示します。

mysql> ALTER TABLE tb_emp2
    -> ADD CONSTRAINT fk_tb_dept1
    -> FOREIGN KEY(deptId)
    -> REFERENCES tb_dept1(id);
Query OK, 0 rows affected (1.38 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> SHOW CREATE TABLE tb_emp2\G
*************************** 1. row ***************************
       Table: tb_emp2
Create Table: CREATE TABLE `tb_emp2` (
  `id` int(11) NOT NULL,
  `name` varchar(30) DEFAULT NULL,
  `deptId` int(11) DEFAULT NULL,
  `salary` float DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_tb_dept1` (`deptId`),
  CONSTRAINT `fk_tb_dept1` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.12 sec)

注: 作成したデータ テーブルに外部キー制約を追加するときは、外部キー制約が追加される列の値がすべて主キー列からのものであることを確認してください。列を空にすることはできません。

(推奨チュートリアル:

mysql ビデオ チュートリアル )

以上がテーブルの外部キー制約を作成する SQL ステートメントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。