DataBases
简介
MariaDB
MySQL
数据类型
创建表
索引 index
主键 primary key
外键 foreign key
数据导入与导出
where条件判断
用户授权与密码
数据备份与恢复
数据热备
主从同步
读写分离
多实例
分库分表
集群-MHA
集群-PXC
存储引擎
本文档使用 MrDoc 发布
-
+
首页
外键 foreign key
外键是指一个表中的列(或多个列)与另一个表中的列建立了关联关系,可以用来保证数据的完整性和一致性。 使用外键可以确保只有在主表中存在对应记录时,才能向子表中插入数据。同时,可以使用外键进行级联操作,例如删除主表中的记录时,自动删除与之关联的所有子表记录,保持数据的一致性。在MySQL中创建外键需要遵循以下步骤: 首先,需要在主表中定义一个主键或唯一索引。这个主键或唯一索引将作为外键约束的目标。 然后,在子表中定义一个外键列,并将其与主表中的主键或唯一索引关联起来。这个关联关系将确保只有在主表中存在对应记录时,才能向子表中插入数据。 最后,需要使用FOREIGN KEY关键字来为子表中的外键列添加外键约束。 #### 创建外键 向表中插入记录时,字段的值引用另外一张表里的值 ```asp create table db2.ygb( #创建一个员工表 -> id int primary key auto_increment, #id自增长 -> name char(20), -> sex enum("boy","girl") -> )engine=innodb; #指定存储引擎 ``` ```asp insert into ygb(name,sex) values("bob","boy"); #插入数据 ``` ```asp insert into ygb(name,sex) values("lucy","girl"); #插入数据 ``` ```asp create table gzb( #创建工资表引用员工表的id字段作为本表的值 -> uid int, #创建用户id字段 -> slalry float(7,2), #创建工资字段 -> foreign key(uid) references ygb(id) #设置外键指定引用值 -> on update cascade #同步新增 -> on delete cascade #同步删除 -> )engine=innodb; #指定引擎 ``` ```asp insert into gzb values(1,10000); #员工编号1的可以写入 ``` ```asp insert into gzb values(2,19000); #员工编号2的可以写入 ``` ```asp insert into gzb values(3,19000); #员工编号3的不可以,因为引用表中没有id3的员工 ``` ```asp ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`db2`.`gzb`, CONSTRAINT `gzb_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `ygb` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) ``` ```asp update ygb set id=8 where id=2; #同步更新,修改引用表的值(id=2改为id=8)数据会一起变化 ``` ```asp delete from ygb where id=8; #同步删除,删除引用表的值(id=8)数据会一起变化 ```
done
2024年5月11日 09:21
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码