• SQL FOREIGN KEY 约束


    1. SQL foreign key 约束

    一个表中的 foreign key 指向另一个表中的 unique key(唯一约束)。

    下面通过实例解释外键。

     注意,“Orders”表中的“P_Id”列指向“Persons” 表中的“P_Id”列。

    “Persons”表中的“P_Id”列是“Persons”表中的primary key

    “Orders” 表中的“P_Id”列是“Orders”表中的 foreign key

    foreign key约束用于预防破坏表之间连接的行为。

    foreign key约束也能防止非法数据插入外键列,因此它必须是指向的那个表中的值之一。

    2. create table 时的 SQL foreign key 约束

    下面的 SQL "Orders" 表创建时在 "P_Id" 列上创建 foreign key 约束:

    MySQL:

    CREATE TABLE Orders
    (
    O_Id int NOT NULL,
    OrderNo int NOT NULL,
    P_Id int,
    PRIMARY KEY (O_Id),
    FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
    )

    SQL Server / Oracle / MS Access:

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

    3. alter table 时的 SQL foregin 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)

    4. 撤销 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
  • 相关阅读:
    web框架和Django框架的初识
    外键的变种,单表的查询,多表的查询
    数据库的安装与初识
    响应式设计中几个class区别
    Velocity+Java较全教程
    Web开发基础
    AutoCompleteTextView不能使用的问题
    Http中Cookie与Set-Cookie头
    Java Web 乱码
    Karel运行环境配置
  • 原文地址:https://www.cnblogs.com/keye/p/14947083.html
Copyright © 2020-2023  润新知