SQL FOREIGN KEY

SQL PRIMARY KEY SQL CHECK

SQL FOREIGN KEY 制約

あるテーブルの FOREIGN KEY は、別のテーブルの PRIMARY KEY を指します。

外部キーを例を挙げて説明しましょう。 次の 2 つの表を参照してください。

"Per@sons" :

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

"Orders" :

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

「Orders」の「Id_P」列は、「persons」テーブルの「Id_P」列を指していることに注意してください。

「persons」テーブルの「Id_P」列は、「persons」テーブルの主キーです。

「Orders」テーブルの「Id_P」列は、「Orders」テーブルの FOREIGN KEY です。

FOREIGN KEY 制約は、テーブル間の接続を切断するアクションを防ぐために使用されます。

FOREIGN KEY 制約は、外部キー列に不正なデータが挿入されることも防ぎます。これは、外部キー列が指すテーブル内の値の 1 つである必要があるためです。

SQL FOREIGN KEY Constraint on CREATE TABLE

次の SQL は、「Orders」テーブルの作成時に「Id_P」列の FOREIGN KEY を作成します。

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

FOREIGN KEY 制約に名前を付け、複数の列に FOREIGN KEY 制約を定義する必要がある場合は、次の SQL 構文を使用します。

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

SQL FOREIGN KEY Constraint on ALTER TABLE

「Orders」テーブルがすでに存在する場合に「Id_P」列に FOREIGN KEY 制約を作成するには、次の SQL を使用します。

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

FOREIGN KEY 制約に名前を付け、複数の列に FOREIGN KEY 制約を定義する必要がある場合は、次の SQL 構文を使用します。

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

FOREIGN KEY 制約を取り消す

FOREIGN KEY 制約を削除するには、次の SQL を使用します。

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders