MySQL外键(详解)

2021/11/17 19:39:43

本文主要是介绍MySQL外键(详解),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

MySQL外键(详解)

什么是外键:
   外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来建立和加强两个表数据之间的连接
在这里插入图片描述

一、主外键关系
在上图上涉及的两个表中,学生信息表 (stuInfo)为主表,学生
成绩表(score)为从表;那么主从表之间有什么关系呢?

1、当主表中没有对应的记录时,不能将记录添加到子表
  --------学生成绩表中不能出现学生信息表中没有的学号

2、不能更改主表中的值而导致子表中的记录孤立
  --------学生信息表中的id变化了,学生成绩表中的id也要随着发生改变

3、子表存在与主表对应的记录,不能从主表中删除该行
  --------不能把部门表中的数据删除

4、删除主表前,先删子表
  --------先删除成绩表、后删除学生信息表

二、外键的使用
外键的使用需要满足下列的条件:
1、两张表必须都是InnoDB表,并且它们没有临时表。

2、建立外键关系的对应列必须具有相似的InnoDB内部数据类型。

3、建立外键关系的对应列必须建立了索引。

创建外键的两种方式:
方式一:在创建表的时候进行添加
方式二:表已经创建好了,继续修改表的结构来添加外键。

在创建表的时候添加外键
表1:

create table stuInfo(	
		Scode int primary key,   --学生的学号
		Sname char(10),    --学生的姓名
		Saddress varchar(50),    --学生的住址
		Sgrade int,    --学生所在班级
		Semail varchar(50),    --学生的邮箱地址
		Sbrith date	
)DEFAULT CHARSET='utf8';	

表2:

create table score(
studentID	int,
coureseID int,	
score int,	
scoreID int primary key,	
foreign	key(studentID) references stuInfo(Scode)  --添加外键 )
DEFAULT charset='utf8';

建表以后添加外键:
语法:alter table 表名称 add foreign key (列名称) references
关联表名称(列名称);
例:

alter table stuInfo	add foreign key (scode) references score(studentID);

三、删除外键
语法:alter table 表名称 drop foreign key 外键名称;
例:

alter table score drop foreign key score_ibQk_1;	

注意:如果没有在建表的时候标明外键名称,
可以通过:

show create table 表名;

进行查看外键名称


请添加图片描述

感谢每一个认真阅读我文章的人!!!
如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如果在学习或工作中遇到问题可以直接点击此链接进群询问,群里也会有大神帮忙解答,也可以手动添加群号 743262921 备注222



这篇关于MySQL外键(详解)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程