zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Dockerfile
    走进Docker
    liunx 设置定时任务
    《程序员自我修养》读书笔记
    Ubuntu换源
    liunx安装python2.7.12
    预习非数值数据的编码方式
    预习原码补码
    第三章预习
    预习非数值数据的编码方式
  • 原文地址:https://www.cnblogs.com/keye/p/14947083.html
Copyright © 2011-2022 走看看