美文网首页
关于主键和外键的一些疑问和解答

关于主键和外键的一些疑问和解答

作者: 未抵达catty | 来源:发表于2018-08-17 18:53 被阅读0次

一、定义

  • 主键:是确定数据中每一条记录的唯一标识,不能重复,不允许有空值(比如居民信息表中的身份证号)
  • 外键:是用来和其他表建立联系,如果一张表中的某个字段指向另外一张表的主键,那么将该字段称之为外键。每张表中,可以有多个外键。

二、一张表的外键可以是这张表的主键吗?

可以,但是由于主键不能重复,所以只有在联合主键的情况下,这个外键才可以重复。

三、join和外键的关系

相同:都是用于建立两个表之间的关系
不同:外键的参考字段必须是另一张表的主键;外键是一种约束关系,会分别对子表和父表进行约束(父表:外键指向的表,子表:拥有外键的表)

四、对子表的约束

首先创建两个表,分别为student 和course,可以看到course表中cno是主键;student表中id是主键,cno指向course的主键,因此我建立了一个外键,名叫fk_student_course。


![course.png](https://img.haomeiwen.com/i13185380/2bd944f19e0eba31.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) student.png student item1.png student item2.png
对子表进行操作时(插入或者修改),如果对应的外键字段在父表找不到对应的匹配,操作就会失败
cmd1.png
因为cno=308在父表中不存在,所以操作失败;
而cno=306的操作成功。

五、对父表的约束

对父表的约束分为三种:

  • 1.district:严格模式(默认),父表不能删除或更新一个已经被子表数据引用的记录;
  • 2.cascade:级联模式,父表的操作(删除或更新),对应子表关联的数据也跟着被删除;
  • 3.set null:置空模式,父表的操作之后,子表对应的数据(外键字段)被置空。
5.1 district模式

由于cno=307在子表中被引用,所以执行父表的删除操作失败。


cmd2.png
5.2 cascade模式

先将外键删除,再建立一个新的外键,名字为fk2(只要在语句后面添加on delete + 模式 + on update + 模式即可)


cmd3.png fk2.png

对父表执行删除操作时,可以看到student表中cno=307的记录也被删除。

cmd4.png

对父表执行更新操作时,可以看到student表中cno=306的记录也被更改为cno=309。


cmd5.png
5.3 set null模式
fk3.png

可以看到当父表中cno=302的记录被删除时,子表中对应的cno被置空。


cmd6.png

相关文章

  • 关于主键和外键的一些疑问和解答

    一、定义 主键:是确定数据中每一条记录的唯一标识,不能重复,不允许有空值(比如居民信息表中的身份证号) 外键:是用...

  • mysql(15)

    主键、外键和索引的区别? 主键,外键和索引的区别如下表: |主键|外键|索引|------|-----|----|...

  • 浅谈数据库主键外键索引

    目录 1、主键、外键、索引定义 2、为什么定义主键、外键 3、主键和外键的关系 4、数据库中主键和外键的设计原则 ...

  • 09_MySQL多表 & JDBC

    MySQL多表 外键 主表主键和从表外键 ==(从表的外键引用主表的主键)== 从表的外键类型必须和主表的主键类型...

  • 外键和主键

    外键

  • Sql知识

    主键外键 主键:PRIMARY KEY 外键:FOREIGN KEY 创建SQL FOREIGN KEY关于数据库...

  • 主键和唯一

    主键和唯一的大对比 外键

  • 设置主键和外键

    1.在创建表格时就设置主键和外键 CREATE table employee2( EmpId VARCHAR(10...

  • sql主键

    SQL 的主键和外键的作用: 外键取值规则:空值或参照的主键值 (1)插入非空值时,如果主键值中没有这个值,则不能...

  • SQL的主键和外键约束详解及用途

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值。 (1)插入非空值时,如果主键表中没有这个值,则不能...

网友评论

      本文标题:关于主键和外键的一些疑问和解答

      本文链接:https://www.haomeiwen.com/subject/ujstiftx.html