当前位置:网站首页>sql 外键约束【表关系绑定】
sql 外键约束【表关系绑定】
2022-07-31 05:15:00 【为今天而努力】
外键
外键必须是表中的一个字段但不一定是该表的主键,但要对应的必须是另一张表的主键,外键的主要作用就是啊要保持数据的完整性,定义外键后不允许删除在另外一张表中具有关联关系的行【一条数据】。
- 主表(父表):主键所在的表即为主表。
- 从表(子表):外键所在的表即为从表。
什么时候使用外键约束
当两张表之间有有关联时可以采用外键约束进行绑定。
示例:有两张表分别为 tb_book【书 】 、 tb_reader【阅读】 ,显然没有书就无法阅读,所以 tb_book 为主表,tb_reader 为从表
// 创建tb_book
CREATE TABLE tb_book(
id int primary key auto_increment,
book_name varchar(50));
// 创建tb_reader
CREATE TABLE tb_reader(
id int primary key auto_increment,
bookId int,
constraint fk_book_id foreign key(bookId) references tb_book(id));
insert into book (book_name) values('喀尔巴阡古堡');
// 正确操作
insert into reader (readPage) values(45);
insert into reader (bookId, readPage) values (1, 30);
// 错误操作
delete from book where id = 1;
insert into reader (bookId, readPage) values (2, 30);
使用外键时注意
- 一个表可以有一个或者多个外键。
- 外键对应的是参照完整性,一个表的外键可以为空值,如果不为空值,则每一个外键的值必须是另一个表中主键的某一个值,否则会提示如下错误:
insert into reader (bookId, readPage) values (30, 1);
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`test_db`.`reader`,
CONSTRAINT `fk_book_id` FOREIGN KEY (`bookId`) REFERENCES `book` (`id`))
- 如果删除在另一张表中具有关联关系的行【一条数据】则会出一下异常:
delete from book where id = 1;
Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`test_db`.`reader`,
CONSTRAINT `fk_book_id` FOREIGN KEY (`bookId`) REFERENCES `book` (`id`))
如果创建时没有添加外键约束可以使用 alter table add 添加
alter table reader add constraint fk_book_id foreign key(bookNameId) references tb_book(id);
边栏推荐
- feign调用不通问题,JSON parse error Illegal character ((CTRL-CHAR, code 31)) only regular white space (r
- js中的break与continue退出
- 【Elastic-Job】分布式调度任务概览篇
- UiBot存在已打开的MicrosoftEdge浏览器,无法执行安装
- 最新MySql安装教学,非常详细
- Hyper-V新建虚拟机注意事项
- leetcode-每日一题873. 最长的斐波那契子序列的长度(哈希和二分)
- MySql创建数据表
- 安装Multisim出现 No software will be installed or removed解决方法
- 常见JVM面试题及答案整理
猜你喜欢
随机推荐
gin框架学习-Casbin进阶之策略管理API使用方法
著名网站msdn.itellyou.cn原理分析
工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息
Artifact SSMwar exploded Error deploying artifact.See server log for details
Common JVM interview questions and answers
leetcode-每日一题873. 最长的斐波那契子序列的长度(哈希和二分)
数字孪生将成为进入“元宇宙”一项重要的途径
场效应管 | N-mos内部结构详解
leetcode-每日一题1252. 奇数值单元格的数目(模拟优化)
2021年京东数据分析工程师秋招笔试编程题
How MySQL - depots table?A look at will understand
UiBot存在已打开的MicrosoftEdge浏览器,无法执行安装
Memcached :安装
What is GameFi?
一个简单的bash转powershell案例
Understanding SSRF, this article is enough
MySQL面试题大全(陆续更新)
MySQL高级SQL语句(二)
Build vulhub vulnerability shooting range on kali
C language tutorial (1) - preparation








![[uiautomation] Get WeChat friend list (stored in txt)](/img/26/1f3424c5998c52c6e10ced8529012a.png)
