一、什么是主键、外键:

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其中每个学生的学号是唯一的,学号就是一个主键  课程表(课程编号,课程名,学分)  其中课程编号是唯一的,课程编号就是一个主键  成绩表(学号,课程号,成绩)  成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键     成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键     同理 成绩表中的课程号是课程表的外键     定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。  外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

 
二、  主键和外键的区别:

 

主键

外键

定义:

唯一标识一条记录,不能有重复的,不允许为空

表的外键是另一表的主键, 外键可以有重复的, 可以是空值

作用:

用来保证数据完整性

用来和其他表建立联系用的

个数:

主键只能有一个

一个表可以有多个外键

最新文章

  1. Oracle数据库自动备份SQL文本:Procedure存储过程,View视图,Function函数,Trigger触发器,Sequence序列号等
  2. 【转】最佳Restful API 实践
  3. Android处理Bitmap的一些方法
  4. 设置文字在div中垂直居中,使用line-height
  5. ftp nfs samba比较
  6. PHP面向对象编程学习之对象基础
  7. 闲扯 Javascript 03 时钟和QQ延时框
  8. JDBC操作数据库的学习(2)
  9. 【Zookeeper】源码分析之持久化--FileTxnSnapLog
  10. YII2 添加全局自定义函数
  11. 一次触摸,Android到底干了啥
  12. Java内存模型_重排序
  13. “等一下,我碰!”——常见的2D碰撞检测
  14. Virtual Memory is deprecated in Redis 2.4
  15. Django 日志输出及打印--logging
  16. Jquery中val方法使用的坑
  17. window.onload和document.ready
  18. 句柄线程做参数和PostMessage的用法
  19. 修改weblogic启动模式:client改为server
  20. Vue.directive基础,在Vue模块开发中使用

热门文章

  1. 核心API的使用(获取两个字符串的最大相同子串)
  2. [java实现]常见算法之字符串操作
  3. leetcode-59-螺旋矩阵 II
  4. OmniMarkupPreviewer 404
  5. Eclipse 的SVN 的分支
  6. Go语言目录
  7. 北航操作系统实验2019:Lab4-1流程梳理
  8. C#方法重载和方法重写的区别
  9. 14.Promise对象
  10. python笔记04-----字典、元组、集合操作