mysql 外部キーは主に、マスター テーブルとスレーブ テーブル間の関係を確立し、2 つのテーブルのデータの接続を確立し、2 つのテーブルのデータの一貫性と整合性を制約するために使用されます。その役割はデータの一貫性を保つことです。主な目的は、外部キー テーブルに格納されているデータを制御することです。テーブルには 1 つ以上の外部キーを含めることができ、外部キーは null にすることもできます。null でない場合、各外部キーの値はメイン テーブルの主キーの特定の値と等しくなければなりません。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約と一緒によく使用されます。関連付けられた 2 つのテーブルの場合、関連付けられたフィールドの主キーが配置されているテーブルが主テーブル (親テーブル) となり、外部キーが配置されているテーブルが副テーブル (子テーブル) になります。
MySQL 外部キーの役割:
データの一貫性と整合性の維持主な目的は、外部キー テーブルに格納されているデータを制御することです。 2 つのテーブルを関連付けるには、外部キーはテーブル内の列の値のみを参照できます。
外部キーは、マスター テーブルとスレーブ テーブル間の関連付けを確立し、2 つのテーブルのデータの接続を確立し、2 つのテーブルのデータの一貫性と整合性を制約するために使用されます。たとえば、果物の屋台には、リンゴ、桃、プラム、スイカの 4 種類の果物しか置いていないとすると、果物を買いに果物屋に来たとき、選択できるのはリンゴ、モモ、プラム、スイカだけになります。は購入できません。
レコードがメイン テーブルから削除されると、それに応じてテーブルの対応するレコードも変更する必要があります。テーブルには 1 つ以上の外部キーを含めることができ、外部キーは null にすることもできます。null でない場合、各外部キーの値はメイン テーブルの主キーの特定の値と等しくなければなりません。
外部キーを定義するときは、次の規則に従う必要があります。
メイン テーブルはデータベースにすでに存在しているか、現在作成中のテーブルである必要があります。後者の場合、マスターテーブルとスレーブテーブルは同一のテーブルとなり、このようなテーブルを自己参照テーブルと呼び、この構造を自己参照整合性と呼びます。
メインテーブルには主キーを定義する必要があります。
主キーには null 値を含めることはできませんが、外部キーでは null 値が許可されます。つまり、外部キーのすべての非 null 値が指定された主キーに出現する限り、外部キーの内容は正しいことになります。
メインテーブルのテーブル名の後に列名または列名の組み合わせを指定します。この列または列の組み合わせは、メイン テーブルの主キーまたは候補キーである必要があります。
外部キーの列数は、メイン テーブルの主キーの列数と同じである必要があります。
外部キーの列のデータ型は、メイン テーブルの主キーの対応する列のデータ型と同じである必要があります。
#テーブル変更時に外部キー制約を追加する
外部キー制約を追加するための前提条件は次のとおりです。テーブルのキー 列のデータは、メイン テーブルの主キー列のデータと一致している必要があります。そうでない場合は、データがありません。 データ テーブルを変更するときに外部キー制約を追加するための構文形式は次のとおりです。ALTER TABLE <数据表名> ADD CONSTRAINT <外键名> FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
例: データ テーブル tb_emp2 を変更し、フィールド deptId を外部キーを取得し、テーブル tb_dept1 の主キー ID とデータの関連付けを照合します
ALTER TABLE tb_emp2 ADD CONSTRAINT fk_tb_dept1 FOREIGN KEY(deptId)REFERENCES tb_dept1(id);
外部キー制約を削除します #テーブルに外部キー制約がない場合 外部キー制約が必要な場合は、テーブルから削除する必要があります。外部キーを削除すると、マスターテーブルとスレーブテーブルの関連付けが解除されます。
外部キー制約を削除するための構文形式は次のとおりです。
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;例:
データ テーブル tb_emp2ALTER TABLE tb_emp2 DROP FOREIGN KEY fk_tb_dept1;
## の外部キー制約 fk_tb_dept1 を削除します。
[関連する推奨事項: mysql ビデオ チュートリアル
]以上がmysqlの外部キーは何に使われますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。