TECH I.S.

SQL FOREIGN KEY制約


SQL FOREIGN KEY制約

FOREIGN KEY制約は、テーブル間のリンクを破壊するアクションを防ぐために使用されます。 FOREIGN KEYは、あるテーブルのフィールド(またはフィールドの集まり)で、別のテーブルのPRIMARY KEYを参照します。

外部キーを持つテーブルは子テーブルと呼ばれ、主キーを持つテーブルは参照テーブルまたは親テーブルと呼ばれます。

次の2つの表を見てください。

人物表

個人ID

苗字

名前

1 ハンセン オラ 30
2 スヴェンソン トーベ 23
3 ペッターセン カリ 20

注文表

オーダーID

注文番号

個人ID

1 77895 3
2 44678 3
3 22456 2
4 24562 1

「Orders」テーブルの「PersonID」列が「Persons」テーブルの「PersonID」列を指していることに注意してください。

"Persons"テーブルの"PersonID"列は、「Person」テーブルのPRIMARY KEYです。

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

FOREIGN KEY制約は親テーブルに含まれる値の1つでなければならないため、外部キー列に無効なデータが挿入されるのを防ぎます。

CREATE TABLEのSQL FOREIGN KEY

次のSQLは"Orders"テーブルが作成されたとき"PersonID"列にFOREIGN KEYを作成します。

MySQL:

CREATE TABLE Orders(    OrderID int NOT NULL,    OrderNumber int NOT NULL,    PersonID int,    PRIMARY KEY (OrderID),    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) );

SQL Server/Oracle/MS Access:

CREATE TABLE Orders(    OrderID int NOT NULL PRIMARY KEY,    OrderNumber int NOT NULL,    PersonID int FOREIGN KEY REFERENCES Persons(PersonID) );

FOREIGN KEY制約に名前を付け、複数の列にFOREIGN KEY制約を定義するには、以下のSQL構文を使用します。

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders(    OrderID int NOT NULL,    OrderNumber int NOT NULL,    PersonID int,    PRIMARY KEY (OrderID),    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)    REFERENCES Persons(PersonID) );



ALTER TABLEのSQL FOREIGN KEY

"Orders"テーブルが既に作成されている場合に"PersonID"列にFOREIGN KEY制約を適用するには、次のSQLを使用します。

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders ADD FOREIGN KEY (PersonID)REFERENCES Persons(PersonID);

FOREIGN KEY制約に名前を付け、複数の列にFOREIGN KEY制約を定義するには、以下のSQL構文を使用します。

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders ADD CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)REFERENCES Persons(PersonID);



FOREIGN KEY制約を削除する

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

MySQL:

ALTER TABLE Orders DROP FOREIGN KEY FK_PersonOrder;

SQL Server/Oracle/MS Access:

ALTER TABLE Orders DROP CONSTRAINT FK_PersonOrder;



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細