MySQLチュートリアル

MySQLホーム MySQLイントロ MySQL RDBMS

MySQL SQL

MySQL SQL MySQL SELECT MySQL WHERE MySQL AND、OR、NOT MySQL ORDER BY MySQL INSERT INTO MySQLNULL値 MySQL UPDATE MySQLDELETE MySQL LIMIT MySQLMINおよびMAX MySQL COUNT、AVG、SUM MySQL LIKE MySQLワイルドカード MySQL IN MySQL BETWEEN MySQLエイリアス MySQLが参加します MySQL内部結合 MySQL LEFT JOIN MySQL RIGHT JOIN MySQL CROSS JOIN MySQL自己結合 MySQL UNION MySQL GROUP BY MySQL HAVING MySQLが存在します MySQL ANY、ALL MySQL INSERT SELECT MySQLケース MySQLヌル関数 MySQLコメント MySQL演算子

MySQLデータベース

MySQL Create DB MySQLドロップDB MySQLテーブルの作成 MySQLドロップテーブル MySQL ALTER TABLE MySQLの制約 MySQLはNullではありません MySQLユニーク MySQLプライマリキー MySQL外部キー MySQLチェック MySQLのデフォルト MySQL CreateIndex MySQL自動インクリメント MySQLの日付 MySQLビュー

MySQLリファレンス

MySQLデータ型 MySQL関数

MySQLの

MySQLの例 MySQLクイズ MySQL演習

MySQLの外部キー制約


MySQLの外部キー制約

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

AFOREIGN KEYは、あるテーブルのフィールド(またはフィールドのコレクション)でありPRIMARY KEY、別のテーブルのを参照します。

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

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

人の表

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

注文表

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

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

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

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

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



CREATETABLEの外部キー

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

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

制約の命名を許可し、複数の列に制約FOREIGN KEYを定義する FOREIGN KEYには、次のSQL構文を使用します。

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)
);

ALTERTABLEの外部キー

FOREIGN KEY「Orders」テーブルがすでに作成されているときに「PersonID」列に制約を作成するには、次のSQLを使用します。

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

制約の命名を許可し、複数の列に制約FOREIGN KEYを定義する FOREIGN KEYには、次のSQL構文を使用します。

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

外部キー制約を削除する

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

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;