SQL FOREIGN KEY 约束介绍

来源:网络时间:2017-03-08 14:02:24

  一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

  让我们通过一个例子来解释外键。请看下面两个表:

  "Persons" 表:



Id_PLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

  "Orders" 表:

Id_OOrderNoId_P
1778953
2446783
3224561
4245621

  请注意,"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。

  "Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。

  "Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。

  FOREIGN KEY 约束用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。


  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

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站) 联系邮箱:rjfawu@163.com