多测师肖sir__数据库之外键11

外键(也叫外码或外部关键字)
外键介绍:
外键定义:用于建立和加强两个表数据之间的链接的一列或多列,通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接,这个列就成为第二表的外键。外键所在的表也称为子表,所依赖的表称为父表。
语句: foreign key
1、让一张表记录的数据不要太过于冗余,在数据库中对标的关系进行解耦,尽量让标的数据单一化。
2、外键的作用:保持数据的一致性和完整性
3、msyql 数据库中的存储引擎
myisam (默认)
innodb (外键需要innodb存储格式)
4、查看存储引擎
格式:show table status from 库名 where name=“表名称”
案例:
show table status from dcs WHERE name=“sy2” ;
在这里插入图片描述

外键讲解:
一、第一种方式:先建两个表,在设置外键
1、先建两个表:创建engine=innodb 格式表
父表:create table f(id int(10) PRIMARY key , name char(20) ) engine=INNODB
子表:create table z(id int(10) PRIMARY key , name char(20) ) engine=INNODB
2、创建外键关键:
格式:alter table 子表 add CONSTRAINT 外键名 FOREIGN key (子表字段) REFERENCES 父表(父表字段) ;
案例:alter table z add CONSTRAINT fk FOREIGN key (sid) REFERENCES f(id) ;

二、第二种方式:先建一个表,在另一个表种设置外键
(1)新建一个表父表ff
create table ff(fid int(10) PRIMARY key , fname char(20) ) engine=INNODB
(2)新建第二个表 zz
create table zz(zid int(10) PRIMARY key , zname char(20) ,CONSTRAINT wj FOREIGN key(zid) REFERENCES ff(fid) ) engine=INNODB
(3)以上表示创建了关联关系

constraint 外键名 指定外键

foreign key (子表 字段) 指定子表字段

references 父表 (父表字段) 引用外部表的主键

==========================================
2、查看外键方法:
(1)通过语句:
格式:show create table 表名
案例:show create table z;
在这里插入图片描述
(2)在navicat下选择库,在点击表,设计及表,找到外键在这里插入图片描述

删除外键
格式:alter table 表名 drop foreign key 外键名 ;
案例:alter table z drop foreign key fk ;

外键名:fk
在这里插入图片描述

外键的特点:
1、当父表不存在的数据,子表就无法插入数据(无法插入,报错)
子表直接插入数据,无法插入
create table zz(zid int(10) PRIMARY key , zname char(20) ,CONSTRAINT wj FOREIGN key(zid) REFERENCES ff(fid) ) engine=INNODB
insert into zz VALUES (1,“aa”);
报错: 外键约束了
Cannot add or update a child row: a foreign key constraint fails (dcs.zz, CONSTRAINT wj FOREIGN KEY (zid) REFERENCES ff (fid))
2、父表中存在的数据,子表才能出入数据
第一步:先插入父表数据,
insert into ff VALUES (1,“11”);
第二步:再插入子表数据
insert into zz VALUES (1,“aa”);
3、父表和子表都是空表,子表是无法插入数据

4、父表和子表 都存在,删除父表(无法删除)

案例:DELETE from ff where fid=1 ; (删除父表数据无法删除)
5、父表和子表 都存在 ,先删除子表数据,在删父表书数据
第一步:先删除子表 DELETE from zz where zid=1 ;
第二部:再删除父表 DELETE from ff where fid=1 ;

==============================================
面试题:
1、什么是外键?
2、如何创建外键?
3、子表和父表关系
4、公司中为什么用外键?
(1)保存数据的一致性和完整性
(2)公司数据量大,造成数据重复,新旧表维护成本大,使用外让公司数据进行分类和管理,让基础数据放在父表上,子表单一化,这样避免了数的冗余。
5、创建外键的数据库的格式是什么?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多测师软件测试培训师肖sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值