外键

1、外键的定义
让一张表记录的数据不要过于冗余,在数据中对表的关系进行解耦,尽量让表的数据单一化。
2、外键的作用:保持数据的一致性和完整性
3、mysql中的存储格式
myisam (默认)
innodb (外键需要用的存储格式)
4、
二、创建外键:
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;
指定外键名:CONSTRAINT 外键名
外键:FOREIGN KEY(自己关联字段)
参考引用:REFERENCES 父表(父表的关联字段)
(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;
格式:
ALTER table 子表 add CONSTRAINT 外键名 FOREIGN key(子表字段) REFERENCES
父表(父表字段) ;
如:
ALTER table y add CONSTRAINT w11 FOREIGN key(yid) REFERENCES x(id) ;
三、外键的运用
1、查看外键创建的语句:
show create table 表名
2、navicat中查看外键
点击库》点表》点击表名设计表外键--查看外键

3、删除外键

alter table 表名 drop FROEING key 索引名
如:alter table y drop foreing key w11;

四、为什么要使用外键:
1、保存数据的一致性和完整性
2、公司数据量大,造成数据重复,新旧表维护成本大,使用外键让公司数据进行分类和管理,让基础数据放在主表。子表单一化,避免数据的冗余。
五、外键的特点
1、当父表不存在的数据,子表也无法插入数据(子表单独插入数据无法插入)
2、先在父表中插入对应的数据,在到子表中插入数据(能插入数据)
3、删除数据,子表中存在的数据,直接删除父表的数据是无法删除(无法删除)
4、删除数据,先删除子表数据,在删除父表的数据(能删除数据)

posted @ 2026-01-23 18:08  plum/  阅读(2)  评论(0)    收藏  举报