数据库中什么是主键,什么是外键?

作者:不染丹心  来源:博客园  发布时间:2009-12-17 22:57  阅读:128 次  原文链接   [收藏]  
这需要理清几个概念:
1)候选键: 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。

2)主键:当有多个候选码时,可以选定一个作为主码,选定的候选码称主键

3)外键: 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。

举个例子:
有两个关系:
student(s#,sname,d#),即学生这个关系有三个属性:学号,姓名,所在系别
dep(d#,dname),即院系有两个属性:系号、系名

则s#、d#是主键,也是各自所在关系的唯一候选键,d#是student的外键。

主键:
能够唯一表示数据表中的每个记录的【字段】或者【字段】的组合就称为主码(主键)。 一个主键是唯一识别一个表的每一记录,但这只是其作用的一部分,主键的主要作用是将记录和存放在其他表中的数据进行关联。在这一点上,主键是不同表中各记录之间的简单指针。所以,主键的值对用户而言是没有什么意义,并且和它要赋予的值也没有什么特别的联系。

外键:
若有两个表A,B,key是A的主键,而B中也有key字段,则key就是表B的外键。

左联接和右联接的区别:
在於以哪个表做主表,两个表做联接时,用左联接以左边的做主表,联接右边的表的数据,右联接反过来。

数据库中什么是主键,什么是外键?相关推荐

  1. 分布式数据库中全局唯一主键

    [相关文章] <分布式数据库中全局唯一主键生成策略的设计与实现> <activiti5.10解决分布式集群部署的主键问题> <分布式环境下数据库主键方案> < ...

  2. SQL Server中的六种约束:主键约束,外键约束,唯一约束,非空约束,检查约束,默认约束

    什么是约束? 数据库-由若干张数据表组成(理解为一个类库) 数据表-由行和列组成的一个二维数组(理解为一个类) 列-字段(理解为表中对象的一个属性) 行-理解为表中的一个对象 约束是数据库中保证数据完 ...

  3. 数据库的主键表和外键表

    想写这个是因为自己刚好在尝试建一个数据库,而数据库的各个表之间的关系不是很清楚,没有形成一个整体的关系,所以就尝试着将数据库形成一个整理的关系表,我 敢说很多跟我一样的同学原来做课程设计,肯定就是随便 ...

  4. mysql中的外键约束_MySQL外键约束

    在本教程中,您将了解MySQL外键(foreign key)以及如何在MySQL中创建,添加和删除外键约束. MySQL外键简介 外键表示一个表中的一个字段被另一个表中的一个字段引用.外键对相关表中的 ...

  5. 关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存

    关于hibernate的关联外键生成以及外键属性列的正确插入即:解决外键插入时,在关联表中除了外键列为空,其它属性均正常级联保存 其实解决办法十分简单: 首先确保你能够级联保存数据,当然除了关联表的外 ...

  6. [JavaWeb-MySQL]约束(非空约束,唯一约束,主键约束,外键约束_级联操作)

    约束 * 概念: 对表中的数据进行限定,保证数据的正确性.有效性和完整性. * 分类:1. 主键约束:primary key2. 非空约束:not null3. 唯一约束:unique4. 外键约束: ...

  7. day 06 非空约束、唯一约束、主键约束、外键约束

      由于sql语句不区分大小写,为了书写方便,本文所有命令统一使用小写  往期内容 day 01 初识Mysql以及DDL数据定义语言  day 02 DML数据操作语言​​​​​​ day 03 D ...

  8. mysql 外键查询_mysql 外键查询(mysql数据库多表联查)

    mysql 外键查询(mysql数据库多表联查) 2020-07-24 11:51:00 共10个回答 查看方式主要是通过第三方工具或者是sql语句,主要有以下三种方式1:使用Navicateform ...

  9. mysql 主外键 策略_mysql外键策略

    1.外键 建表时添加外键:constraint 外键名 foreign key 从表字段 references 主表字段 级联操作 create table dage( create table xi ...

最新文章

  1. Directory File Disk Searcher
  2. 数字万用表的四位半,三位半都是什么意思?
  3. 修改tomcat端口号的方法:
  4. 基于Boost::beast模块的同步HTTP客户端
  5. 某个软件调用目标异常_线上RPC远程调用频繁超时问题排查,大功臣Arthas
  6. [蓝桥杯][基础练习VIP]分解质因数-质数筛选+模拟+双指针
  7. 【Python基础知识-pycharm版】第九节_面向对象的三大特征
  8. ipfs c++client
  9. 随机数芯片,从硬件上能产生真随机数,非伪随机数
  10. Linux基础四---系统监控硬盘分区
  11. vue3 main.js引入 axios_Vue3.0新特性探索
  12. tomcat设置编码格式utf8
  13. 计算机视觉及图像处理领域会议,CCF推荐(A类,B类,C类)
  14. 利用checked实现收藏按钮红心的显示与隐藏
  15. 松下MINAS-A6伺服电机调试记录
  16. Spring5框架day01之IOC容器
  17. JavaScript能做什么 单行注释 多行注释
  18. 0x00000124蓝屏问题解决方法
  19. vrchat新手教程_VRChat入门指南| 最新电脑资讯
  20. 键盘钢琴(有空进来弹弹琴,真的可以弹的)

热门文章

  1. asp.net用户登录 用户验证
  2. hdu 4533(树状数组区间更新+单点查询)
  3. 《机器学习实战》chapter 11 使用apriori算法进行关联分析
  4. RecSys 2016总结
  5. 2019牛客暑期多校训练营(第九场)-E All men are brothers
  6. JAVA中JPasswordField实现密码的确认
  7. {%csrf_token%}的作用
  8. 4.6 explain 之 rows
  9. HDU2504 又见GCD
  10. SRM 533 DIV2