一、外键
定义:让一张表记录的数据不要太过于冗余,在数据库汇中对表的关系进行解耦,尽量让数据的单一化
二、外键作用:
保持数据的一致性和完整性
三、mysql 的存储引擎
(1)MyISAM 默认引擎
(2)innodb (外键需要用到innodb存储格式)
格式:
show table status from 库名 where name=表名
语句:
show table status from dcs where name="student"
截图:
图片
四、查看外键方法
(1)格式:
show create table表名;
语句:
show create table student ;
图片
(2)在navicat上查看外键
图片
五、外键实战
外键:FOREIGN key 单词
(1)在建表的过程中新建外键
f表:
create table f(id int(10) PRIMARY key,name varchar(20))ENGINE=INNODB ;
z表:
create table Z(Zid int(10) PRIMARY key,Zname varchar(20))ENGINE=INNODB ;
s表:
create table s(sid int(10)PRIMARY key,sname varchar(20),CONSTRAINT wj FOREIGN key(sid) REFERENCES f(id))ENGINE=INNODB ;
CONSTRAINT 外键名 ( 自己定义 CONSTRAINT 指定外键名)
FOREIGN key 自己表的字段
REFERENCES 另一张表(关联字段)
截图:
图片
(2)
(3)删除外建
格式:
alter table 表名 drop FOREIGN key 外键名;
语句:
alter table s drop FOREIGN key wj;
截图;
图片
第二种创建外键的方式:
新建两个表:
create table f(id int(10) PRIMARY key,name varchar(20))ENGINE=INNODB ;
create table z(zid int(10) PRIMARY key,zname varchar(20))ENGINE=INNODB ;
设置外键:
语句:
alter table z add CONSTRAINT wjm1 FOREIGN key (zid)
REFERENCES f(id) ;
图片
六、外键特点
1、父表不存在的数据,子表无法插入
图片
2、父表存在的数据,子表才能插入对应的数据
图片
- 存在外键,无法直接删除父表的数据,要先删除子表的数据,才能删除父表
语句:
delete from f where id=1;
delete from z where zid=1;
截图:
图片
面试题:
1、什么是外键?
2、外键作用?
3、如何创建外键?两种创建方法
4、如何删除外键?
5、公司使用外键?
a、保证数据的唯一性
b、公司数据量大,造成数据重复,新旧表维护成本大,使用外键进行分类管理,主表和子表单一化,避免数据的冗余
标签:ENGINE,数据库,外键,FOREIGN,key,table,create From: https://www.cnblogs.com/hutongxue/p/18385111