Mysql 外部キー制約の記述方法: [[CONSTRAINT ] FOREIGN KEY フィールド名 REFERENCES 主キー列 1]。外部キー制約は、主キー制約とともによく使用されるテーブルの特別なフィールドです。
CREATE TABLE ステートメントでは、FOREIGN KEY キーワードを使用して外部キーを指定します。
(推奨学習: mysql チュートリアル)
具体的な構文形式は次のとおりです:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES <主表名> 主键列1 [,主键列2,…]
MySQL 外部キー制約 (FOREIGN KEY) は、 table 主キー制約とともによく使用される特別なフィールド。
関連付けられたリレーションシップを持つ 2 つのテーブルの場合、関連付けられたフィールドの主キーが配置されているテーブルがメイン テーブル (親テーブル) であり、外部キーが配置されているテーブルが副テーブル (子テーブル) です。テーブル)。
外部キーを定義するときは、次の規則に従う必要があります。
メイン テーブルはデータベースにすでに存在しているか、現在作成中のテーブルである必要があります。後者の場合、マスターテーブルとスレーブテーブルは同一のテーブルとなり、このようなテーブルを自己参照テーブルと呼び、この構造を自己参照整合性と呼びます。メインテーブルには主キーを定義する必要があります。
主キーには null 値を含めることはできませんが、外部キーでは null 値が許可されます。つまり、外部キーのすべての非 null 値が指定された主キーに出現する限り、外部キーの内容は正しいことになります。
メインテーブルのテーブル名の後に列名または列名の組み合わせを指定します。この列または列の組み合わせは、メイン テーブルの主キーまたは候補キーである必要があります。
外部キーの列数は、メイン テーブルの主キーの列数と同じである必要があります。
外部キーの列のデータ型は、メイン テーブルの主キーの対応する列のデータ型と同じである必要があります。
例:
テーブル間の外部キー関係を示すために、この例では test_db データベースに部門テーブル tb_dept1 を作成します。テーブル構造は次のとおりです。次の表を参照してください。
tb_dept1 を作成する SQL ステートメントと実行結果は次のとおりです。
mysql> CREATE TABLE tb_dept1 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(22) NOT NULL, -> location VARCHAR(50) -> ); Query OK, 0 rows affected (0.37 sec)
データ テーブル tb_emp6 を作成し、テーブル tb_emp6 に外部キー制約を作成して、そのキー deptId が外部キーとしてテーブル tb_dept1 の主キー ID に関連付けられるようにします。SQL ステートメントと実行中結果は以下の通り。
mysql> CREATE TABLE tb_emp6 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> CONSTRAINT fk_emp_dept1 -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp6; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | MUL | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (1.33 sec)
上記のステートメントが正常に実行されると、fk_emp_dept1 という名前の外部キー制約がテーブル tb_emp6 に追加されます。外部キー名は deptId で、テーブル tb_dept1 の主キー ID に依存します。
注: セカンダリ テーブルの外部キーはプライマリ テーブルの主キーに関連している必要があり、主キーと外部キーのデータ型は一貫している必要があります。たとえば、両方とも INT 型であるか、両方とも CHAR 型です。このような要件が満たされていない場合、スレーブ テーブルの作成時に「ERROR 1005 (HY000): Can't create table」エラーが発生します。
以上がmysqlで外部キー制約を記述する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。