主键不能为空,唯一键可以为空且可以多个唯一键

外键必须为另一个表中的主键 

外键的用途是确保数据的完整性。它通常包括以下几种:
1 实体完整性,确保每个实体是唯一的(通过主键来实施) 2 域完整性,确保属性值只从一套特定可选的集合里选择 3 关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值 FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
外键是用来控制数据库中数据的数据完整性的,
就是当你对一个表的数据进行操作
和他有关联的一个或更多表的数据能够同时发生改变
这就是外键的作用

一般很少使用外键去做关联,因为效率低下

最新文章

  1. 用c#开发微信(5)自定义菜单设置工具 (在线创建)
  2. jquery select取值,赋值操作
  3. jquery练习(一次性赋予多个属性值)
  4. extern的用法
  5. js 实现继承相关
  6. 远控软件VNC攻击案例研究
  7. apache开源项目-- Turbine
  8. HTML5和CSS3的学习视频
  9. POJ1942——Paths on a Grid(组合数学)
  10. usb cdc 协议
  11. iOS页面间传值的方式 (Delegate/NSNotification/Block/NSUserDefault/单例)
  12. 利用JPEGImageEncoder进行简单的图片压缩
  13. Codeforces Round #545 (Div. 2)(D. Camp Schedule)
  14. HTML之Position用法
  15. D. Imbalanced Array
  16. lufylegend:动画
  17. MyBatis拦截器的执行顺序引发的MyBatis源码分析
  18. Tomcat 上传war包后 会自动部署
  19. 京东阅读PDF导出
  20. slim(4621✨)

热门文章

  1. [对对子队]会议记录4.16(Scrum Meeting7)
  2. AFO记
  3. 洛谷 P3332 [ZJOI2013]K大数查询 (整体二分理解)
  4. AOP源码解析:AspectJAwareAdvisorAutoProxyCreator类的介绍
  5. 高并发场景下JVM调优实践之路
  6. Unity的Deferred Shading
  7. tcp 三次握手建立连接难点总结
  8. Docker 18.03导入导出
  9. p->next = q, p = q->next, q->next = p->next的区别
  10. "简单"的优化--希尔排序也没你想象中那么难