MySQL——外键

外键
一、外键的介绍
1、外键的定义
让一张表记录的数据不要归于冗余,在数据中对表的关系进行解耦,尽量让表的数据单一化。
2、外键的作用
保持数据的一致性和完整性
3、mysql中的存储格式
myisam (默认)
innodb (外键需要用的存储格式)
4、查看mysql存储的方式:
格式:
show table status FROM 仓库名 where name="表名"
如:
show table status FROM ck1 where name="emp"
6d4186fab9f75fefc634135aaf8c7632

二、创建外键:
备注:engine=innodb
(1)建表时创建外键
a表:
create table a( id int(20) PRIMARY key, name varchar(20))engine=INNODB;
b表:
create table b(bid int(20) PRIMARY key, bname VARCHAR(20) ,CONSTRAINT
wj FOREIGN KEY(bid) REFERENCES a(id))engine=INNODB;
image

指定外键名:CONSTRAINT 外键名
外键:FOREIGN KEY(自己关联字段)
参考引用:REFERENCES 父表(父表的关联字段)
3359286eb0683d7322ee88a50e412c96
53f6c433003a341cb1a050fb9b93f75d

(2)表已新建好,在添加外键
x表:
create table x( id int(20) PRIMARY key, name varchar(20))engine=INNODB;
y表:
create table y( yid int(20) PRIMARY key, yname varchar(20))engine=INNODB;
image

格式:
ALTER table 子表 add CONSTRAINT 外键名 FOREIGN key(子表字段) REFERENCES
父表(父表字段) ;
如:
ALTER table y add CONSTRAINT w11 FOREIGN key(yid) REFERENCES x(id) ;

5f17c3eed6975bc8eb05fb73abdc65e5

三、外键运用
1、查看外键创建的语句:
格式:show create table 表名
show create table y
a6829b3f4870be1aa9d7b258b14fddef

2、在navicat中查看
点击库》点表》点击表名设计表外键--查看外键
3、删除外键
格式:alter table 表名 drop FOREIGN key 索引名 ;
如:

alter table y drop FOREIGN key w11 ;

四、外键的特点
1、当父表不存在的数据,子表也无法插入数据(子表单独插入数据无法插入)
2、先在父表中插入对应的数据,在到子表中插入数据(能插入数据)
3、删除数据,子表中存在的数据,直接删除父表的数据是无法删除(无法删除)
4、删除数据,先删除子表数据,在删除父表的数据(能删除数据)

五、外键的面试题
1、什么是外键?
2、外键作用?
3、如何创建外键?
4、删除外键 ?
5、公司中为什么要使用外键?
(1)保存数据的一致性和完整性
(2)公司数据量大,造成数据重复,新旧表维护成本大,使用外键让公司数据进行分类和管理,让基础数据放在主表,子表单一化,避免数据的冗余

posted @ 2026-01-23 16:43  软件测试小董  阅读(2)  评论(0)    收藏  举报