MySQLの外キー制約(FOREIGN KEY)

定義:

MySQLの外部キー制約(FOREIGN KEY)は、リンクを確立するために2つのデータテーブルとの間で使用される、または、複数の行であってもよいです。テーブルは、1つまたは複数の外部キーを持つことができます。

NOT NULL値が、各外部キー値の値が別のテーブルの主キーと同じでなければならない場合、外部キーの参照整合性に対応するには、外部キーテーブルは、ヌルであってもよいです。

外部キーは、これはテーブルの主キーが、別のテーブルの対応する主キーではなく、テーブル内のフィールドです。関連する関係で、別のテーブルに削除行に許可されていない外部キーを定義します。

外部キーの主な役割は、データの一貫性、整合性を維持することです。たとえば、主キーがIDですtb_dept部門のテーブルには、キーがtb_emp5のスタッフ・テーブルに関連付けられたIDをDEPTIDがあります。

  • 主テーブル(親テーブル):2つのテーブルの関係を持っているため、関連する主キーのフィールドはどこ主テーブルです。
  • テーブル(子テーブル)から:関連性を有する二つのテーブルでは、外部キーフィールドは、テーブルから提示されたテーブルに関連付けられています。

選択フィールド外部キー制約:

あなたが外部キーを定義するときは、次のルールを遵守する必要があります。

  • 親テーブルは、データベースにすでに存在している必要があり、またはテーブルは、現在作成されています。後者の場合には、親テーブルと子テーブルは、このような構造は、自己参照整合性と呼ばれ、そのようなテーブルは自己参照テーブルと呼ばれ、同じテーブルです。
  • 親テーブルには主キーを定義する必要があります。
  • 主キーはNULL値を含めることはできませんが、nullの外部キーが発生したことができます。言い換えれば、限り、各非ヌル値が指定された外部キー主キーに表示される、本の内容の外部キーは、それが正しいです。
  • 表の後に、親テーブルの列名または列名の組み合わせを指定します。列または列の組み合わせは、親テーブルの主キーまたは候補キーでなければなりません。
  • 外部キー列の数は同じで、親テーブルの主キー列の数でなければなりません。
  • あなたは、同じデータ型の列と主キー列に対応する親テーブル型のデータの外部キーである必要があります。

外部キー制約:

1、テーブルを作成するときに、外部キー制約を追加

次のような構文規則は以下のとおりです。

[CONSTRAINT <外部キー名>] FOREIGN KEYフィールド名[、フィールド名2、...]
REFERENCES <プライマリ・テーブル名>主キー列1〔、主キー列2、...]

前記<外部キー名>表は、同じ名前の外部キーを持っていないことができ、外部キー制約定義の名前であり、<フィールド名>サブテーブルタグ・フィールド列外部キー制約を表し、<プライマリ・テーブル名>すなわち、キルト外部キーテーブルの名前テーブルに依存する; <主キー列>はプライマリ・テーブルまたは列の組み合わせで定義された主キー列を表します。

[実施例1] test_dept1親テーブルとして指定されたテーブルを作成します

 

 

 

 

 

 

 

 

データテーブルtb_emp6を作成し、テーブルのtb_emp6に外部キー制約を作成し、それが主キーのID tb_dept1への外部キーとしてキーテーブルをDEPTID

 

 

 

 

 

 

 

 

 

 テーブルのプライマリキーtb_dept1 IDに依存fk_emp_dept1外側のキー、外部キーの名前DEPTID、。

ヒント:関連は、リレーショナルデータベースに関連するテーブル間のリンクを参照します。これは、プロパティまたは属性の同じセットで表現されます。子テーブルの外部キーは、親テーブルの主キーに関連付けられている必要があり、および関連するフィールドのデータ型が一致しなければならないことができます:ERROR 1005(HY000)」サブテーブルを作成している間、そうでない場合は、同じタイプを、エラーが発生しました table'database.tablenameを作成しません「(errnoに:150)」。

2、データテーブルを変更するときに、外部キー制約を追加

文法規則:

ALTER TABLE <テーブル名> CONSTRAINT <インデックス名> ADD
FOREIGN KEY(<カラム名>)REFERENCES <プライマリ・テーブル名>(<カラム名>)。

[実施例2]変形データテーブルtb_emp3、外部キーフィールドDEPTIDセットは、データテーブルの主キーIDを関連付けることtb_dept1

 

 

 同じデータベースの外部キー制約名は、それ以外の場合はエラーになり、繰り返すことはできません

 

 

外部キー制約を削除します。

 あなたは、もはや必要、データベース内で定義されていない外部キーの場合、あなたはそれを削除することができます。あなたが外部キーを削除すると、それはメインテーブルから持ち上げとテーブル間の関係、外部キーの構文を削除MYSQLされる次のとおりです。

ALTER TABLE <テーブル名> DROP FOREIGN KEY <外部キー制約名>;

【实例 3】删除数据表 tb_emp3 中的外键约束 fk_em_dept1

删除前:

 

 

 

 

 删除后:

 

 

 

 

 tb_emp3 中已经不存在 FOREIGN KEY,原有的名称为 fk_emp_dept 的外键约束删除成功。

 

おすすめ

転載: www.cnblogs.com/ccstu/p/12160703.html