SQL教程
  • [SQL教程]SQL 教程
  • [SQL教程]SQL 简介
  • [SQL教程]SQL 语法
  • [SQL教程]SQL SELECT 语句
  • [SQL教程]SQL SELECT DISTINCT 语句
  • [SQL教程]SQL WHERE 子句
  • [SQL教程]SQL AND & OR 运算符
  • [SQL教程]SQL ORDER BY 关键字
  • [SQL教程]SQL INSERT INTO 语句
  • [SQL教程]SQL UPDATE 语句
  • [SQL教程]SQL DELETE 语句
  • [SQL教程]SQL SELECT TOP, LIMIT, ROWNUM 子句
  • [SQL教程]SQL LIKE 操作符
  • [SQL教程]SQL 通配符
  • [SQL教程]SQL IN 操作符
  • [SQL教程]SQL BETWEEN 操作符
  • [SQL教程]SQL 别名
  • [SQL教程]SQL 连接(JOIN)
  • [SQL教程]SQL INNER JOIN 关键字
  • [SQL教程]SQL LEFT JOIN 关键字
  • [SQL教程]SQL RIGHT JOIN 关键字
  • [SQL教程]SQL FULL OUTER JOIN 关键字
  • [SQL教程]SQL UNION 操作符
  • [SQL教程]SQL SELECT INTO 语句
  • [SQL教程]SQL INSERT INTO SELECT 语句
  • [SQL教程]SQL CREATE DATABASE 语句
  • [SQL教程]SQL CREATE TABLE 语句
  • [SQL教程]SQL 约束 Constraints
  • [SQL教程]SQL NOT NULL 约束
  • [SQL教程]SQL UNIQUE 约束
  • [SQL教程]SQL PRIMARY KEY 约束
  • [SQL教程]SQL FOREIGN KEY 约束
  • [SQL教程]SQL CHECK 约束
  • [SQL教程]SQL DEFAULT 约束
  • [SQL教程]SQL CREATE INDEX 语句
  • [SQL教程]SQL 撤销索引、撤销表以及撤销数据库
  • [SQL教程]SQL ALTER TABLE 语句
  • [SQL教程]SQL AUTO INCREMENT 字段
  • [SQL教程]SQL 视图 Views
  • [SQL教程]SQL Date 函数
  • [SQL教程]SQL NULL 值
  • [SQL教程]SQL NULL 函数
  • [SQL教程]SQL 通用数据类型
  • [SQL教程]SQL 用于各种数据库的数据类型
  • [SQL教程]SQL 函数
  • [SQL教程]SQL AVG() 函数
  • [SQL教程]SQL COUNT() 函数
  • [SQL教程]SQL FIRST() 函数
  • [SQL教程]SQL LAST() 函数
  • [SQL教程]SQL MAX() 函数
  • [SQL教程]SQL MIN() Function
  • [SQL教程]SQL SUM() 函数
  • [SQL教程]SQL GROUP BY 语句
  • [SQL教程]SQL HAVING 子句
  • [SQL教程]SQL UCASE() 函数
  • [SQL教程]SQL LCASE() 函数
  • [SQL教程]SQL MID() 函数
  • [SQL教程]SQL LEN() 函数
  • [SQL教程]SQL ROUND() 函数
  • [SQL教程]SQL NOW() 函数
  • [SQL教程]SQL FORMAT() 函数
  • [SQL教程]SQL语句 快速参考
  • [SQL教程]SQL 主机
  • [SQL教程]SQL 总结
  • 直达腾讯云服务器
    腾讯云服务器,数据库,短信等热销产品限量秒杀;新购爆款3折起;
    腾讯云数据库MySQL入门机型仅12元/月
    腾讯云云服务器新购特惠,最低2折起,1核1G3年仅794.73元,即0.73元/日。
    腾讯云国际顶级CA机构SSL证书8.8折,云解析买一年最高送半年!
    腾讯云为数百万企业和开发者提供安全、稳定的云服务器、云数据库、CDN等云服务
    腾讯云服务器安全可靠高性能,多种配置供您选择
    腾讯云数据库性能卓越稳定可靠,为您解决数据库运维难题
    阿里云服务器入口
    180天免费用腾讯云服务器马上领取
    您当前位置:狗鱼MySQL教程 >> 数据库 >> SQL教程 >> SQL FOREIGN KEY 约束
    SQL FOREIGN KEY 约束
    更新日期: 2017年07月27日 来源: 本站原创 作者: 佚名 阅读:
    上一篇SQL PRIMARY KEY 约束 下一篇:SQL CHECK 约束

    sql FOREIGN KEY 约束


    SQL FOREIGN KEY 约束

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

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

    "Persons" 表:

    P_Id LastName FirstName Address City
    1 Hansen Ola Timoteivn 10 Sandnes
     
    2 Svendson Tove Borgvn 23 Sandnes
     
    3 Pettersen Kari Storgt 20 Stavanger
     

    "Orders" 表:

    O_Id OrderNo P_Id
    1 77895 3
     
    2 44678 3
     
    3 22456 2
     
    4 24562 1
     

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

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

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

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

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


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

    ALTER TABLE 时的 SQL FOREIGN 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)
     

    撤销 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


     
     

    感觉本站内容不错,读后有收获?

    我要小额赞助,鼓励提供更好的内容教程

    上一篇SQL PRIMARY KEY 约束 下一篇:SQL CHECK 约束
    Copyright 2013-2017 Powered by 狗鱼MySQL教程,All Rights Reserved.
    广州相如计算机科技有限有限公司 版权所有 粤ICP备08130661号-4
    售前咨询:020-38667011 手机:13711588918