SQL FOREIGN KEY 关键字

FOREIGN KEY

FOREIGN KEY 约束是用于将两个表关联在一起的键。

外键是一个表中引用另一个表中主键的字段(或字段集合)。


建表时创建外键

下面的 SQL 在 "Orders" 表创建的时候就创建了一个 "PersonID" 列的外键:

MySQL:

  1. CREATE TABLE Orders(
  2. OrderID int NOT NULL,
  3. OrderNumber int NOT NULL,
  4. PersonID int,
  5. PRIMARY KEY (OrderID),
  6. FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
  7. );

SQL Server / Oracle / MS Access:

  1. CREATE TABLE Orders(
  2. OrderID int NOT NULL PRIMARY KEY,
  3. OrderNumber int NOT NULL,
  4. PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
  5. );

要允许命名外键约束,并在多列上定义外键约束,请使用以下 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

  1. CREATE TABLE Orders(
  2. OrderID int NOT NULL,
  3. OrderNumber int NOT NULL,
  4. PersonID int,
  5. PRIMARY KEY (OrderID),
  6. CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
  7. REFERENCES Persons(PersonID)
  8. );

改表时创建外键

当 "Orders" 已存在时, 要对 "PersonID" 列创建外键, 可以使用以下 SQL 语句:

MySQL / SQL Server / Oracle / MS Access:

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

要允许命名外键约束,并在多列上定义外键约束,请使用以下 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

  1. ALTER TABLE Orders
  2. ADD CONSTRAINT FK_PersonOrder
  3. FOREIGN KEY (PersonID)REFERENCES Persons(PersonID);

删除外键

要删除外键约束,请使用以下 SQL:

MySQL:

  1. ALTER TABLE Orders
  2. DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access:

  1. ALTER TABLE Orders
  2. DROP CONSTRAINT FK_PersonOrder;

分类导航