mysql之外键
一、外键
外键的定义:
让一张表记录的数据不要太过于冗余,在数据库中对表的关系进行解耦,尽量让表的数据单一化。
二、外键的作用?
保持数据的一致性和完整性
三、mysql 数据库中的存储引擎
myisam(默认)
innodb (外键需要这种innodb存储格式)
四、查看存储引擎
格式:show table status from 库名 where name="表名"
案例:show table status from dcs where name="student"
==============================
外键实战
(1)创建engine=innodb 格式 的表格
(2)外键,创建的表必须有主键 (子表可以不设主键)
a、建表时建外键
父表:create table s (sid int(10) PRIMARY key ,sname varchar(10)) engine=innodb;
子表:CREATE table c (id int(10) PRIMARY key ,name varchar(10),CONSTRAINT f foreign key(id) REFERENCES s1(sid) )engine=innod
CONSTRAINT 外键名
foreign key(子表关联字段) id是子表字段 外键
REFERENCES 父表(父表关联字段) 引用
b、表建好,在新建外键
mm表:create table mm (sid int(10) PRIMARY key ,sname varchar(10)) engine=innodb;
nn 表:create table nn (id int(10) PRIMARY key ,name varchar(10)) engine=innodb;
格式:alter table nn add constraint 外键名 FOREIGN key (子表关联字段 ) REFERENCES 父表(关联字段) ;
案例:alter table nn add constraint fk_wj FOREIGN key (id) REFERENCES mm(sid) ;
================================
查询是有外键:
方法一:
方法二:查看创建的索引
格式:show create table 表名 ;
show create table nn ;
================================
删除外键:
格式:alter table 表名 drop foreign key 外键名
alter table nn drop foreign key fk_wj
================================
外键中的一些特性:
1、父表不存在的数据,子表无法插入数据
2、父表中存在的数据,子表就库插入数据
3、父表和子表都是空数据,子表无法插入数据,父表可以插入数据
4、父表和子表都存在的数据,无法删除父表
5、父表和子表都存在的数据,先删除子表,在删除父表
================================
总结:
1、如何创建外键?
2、什么是外键?
3、外键的作用?
4、外键中子表和父表的关系?
5、公司中为什么用外键?
(1)保存数据的一致性和完整性
(2)公司数据量大,造成数据重复新旧表维护成本大,使用外键让公司数据进行分类和管理,让基础数据放在主表上,子表单一化,这样可以避免数据的冗余
show table status from dcs where name="student"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架