当前位置:网站首页>MySQL外键(详解)
MySQL外键(详解)
2022-08-04 05:36:00 【begefefsef】
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
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢
随机推荐
golang 的库引用方法
NelSon:一款新的适配matlab编程语法的编程工具
FCN——语义分割的开山鼻祖(基于tf-Kersa复现代码)
Database: Organize Four Practical SQL Server Scripting Functions
matlab的2DCNN、1DCNN、BP、SVM故障诊断与结果可视化
指定区域内随机填充圆之matlab实现
pycharm专业版使用
MySQL重置root密码
电脑软件:推荐一款磁盘空间分析工具——WizTree
核心价值观编码器【matlab版】
普通用户 远程桌面连接 服务器 Remote Desktop Service
Flask request 返回网页中 checkbox 是否选中
更改mysql数据库默认的字符集(mysql 存储 emoji表情)
【C# - 方法封装】数据转换
Computer software: recommend a disk space analysis tool - WizTree
golang chan
Hardware Knowledge: Introduction to RTMP and RTSP Traditional Streaming Protocols
对象的扩展补充
Database knowledge: SQLServer creates non-sa user notes
MATLAB版量化交易技术分析工具TA-Lib【不付费也可获取,不要被付费吓跑】