• SQL FOREIGN KEY 约束


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

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

    "Persons" 表:

    image

    "Orders" 表:

    image

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

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

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

    Persions表的主键“Id_P”列是“Orders” 表中的FOREIGN KEY。

    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)--Persions表的主键“Id_P”列是“Orders” 表中的FOREIGN KEY。
    )
    
    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
  • 相关阅读:
    数学+高精度 ZOJ 2313 Chinese Girls' Amusement
    最短路(Bellman_Ford) POJ 1860 Currency Exchange
    贪心 Gym 100502E Opening Ceremony
    概率 Gym 100502D Dice Game
    判断 Gym 100502K Train Passengers
    BFS POJ 3278 Catch That Cow
    DFS POJ 2362 Square
    DFS ZOJ 1002/HDOJ 1045 Fire Net
    组合数学(全排列)+DFS CSU 1563 Lexicography
    stack UVA 442 Matrix Chain Multiplication
  • 原文地址:https://www.cnblogs.com/AmatVictorialCuram/p/4006842.html
Copyright © 2020-2023  润新知