>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20597 个阅读者 刷新本主题
 * 贴子主题:  SQL FOREIGN KEY 约束 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2019-08-19 13:55:30     消息  查看  搜索  好友  邮件  复制  引用

  

SQL  FOREIGN KEY 约束

SQL FOREIGN KEY 约束

     一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE 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

    



程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-11 21:50:13 重新编辑]
  Java面向对象编程-->多线程(上)
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->第一个helloapp应用
  Java网络编程-->基于UDP的数据报和套接字
  精通Spring-->Vue Router路由管理器
  Vue3开发-->Vue Router路由管理器
  TCP的三次握手建立链接和四次挥手释放链接
  数据库建立索引的原则
  Mysql--所有版本安装以及完全卸载
  Zabbix中文使用手册
  PostgreSQL VFD机制
  打开黑盒:从 MySQL架构设计出发,看它是如何执行一条SQL语句...
  8种最坑的SQL错误用法,第一个就很坑?
  MySQL 运算符的用法
  SQL 通用数据类型汇总
  SQL DEFAULT 约束
  SQL NOT NULL 约束
  网络运维 - 你与真相就差一层窗户纸
  管理密码策略
  Mysql支持的数据类型(总结)
  开发好几年,你真的懂MQ嘛(RabbitMQ为例)?看完别说难搞哦
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。