SQL入門チュートリアルマニュ...login
SQL入門チュートリアルマニュアル
著者:php.cn  更新時間:2022-04-12 14:15:40

SQL 外部キー



SQL FOREIGN KEY 制約

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

例を通して外部キーについて説明しましょう。次の 2 つのテーブルを参照してください:

"persons" テーブル

P_IdLastNameFirstNameAddressCity
1HansenオラTimoteivn 10サンドネス
2スヴェンソントーベボルグブン23サンドネス
3ペッターセンカリストルグト20 スタヴァンゲル

「注文」テーブル:

3224562424562 1

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

「パーソン」テーブルの「P_Id」列は、「パーソン」テーブルの主キーです。

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

FOREIGN KEY 制約は、テーブル間の結合を破壊する動作を防ぐために使用されます。

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


CREATE TABLE 時の SQL FOREIGN KEY 制約

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

MySQL:

CREATE TABLE Orders
(
o_id int not not null、oorderno int not null、
p_idint、
primarykey(o_id)、
foreignキー(p_id)参照者(p_id)

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,P_Id int FOREIGN KEY REFERENCES Persons(P_Id))

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


MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,P_Id int,) PRIMARY KEY ( O_Id),

CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES persons(P_Id)
)




ALTER TABLE 時の SQL FOREIGN KEY 制約

"Orders" テーブルが作成されたとき (必要な場合) 「P_Id」列作成の FOREIGN KEY 制約を指定するには、次の SQL を使用してください:
MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders

ADD FOREIGN KEY (P_Id)

REFERENCES persons(P_Id)

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

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders

ADD CONSTRAINT fk_PerOrders

FOREIGN KEY ( P_Id)

REFERENCES persons(P_Id)

FOREIGN KEY制約を取り消す

FOREIGN KEY制約を取り消すには、次のSQLを使用してください:
MySQL:

ALTER T ABLE 注文

海外からのドロップKEY fk_PerOrders

SQL Server/Oracle/MS アクセス:


ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

O_IdOrderNoP_Id
1778953
2446783