mysql之外键

一、外键的介绍

1、外键的定义
让一张表记录的数据不要太过于冗余,在数据库中对表的关系进行解耦,尽量让表的数据单一化。

2、外键的作用
保持数据的一致性和完整性

3、msyql 数据库中的存储引擎?
myisam (默认)
innodb (外键需要用到innodb存储格式)

4、查看存储引擎
格式:show table status from 库名 where name='表名' ;
案例:show table status from hh where name='student'

5、存储类型:myisam (默认)

6、查看外键方法:

(1)在navicat中查看
cc 表中外键名 为 cid; 借用的是父表ss表中的 id

(2)查看外键
show create table 表名;

二、外键运用

(一)建表时创建外键

(1)创建 engine=INNODB 格式

格式:

CREATE table 表名 (字段名 字段类型(字符长度) PRIMARY key , 字段名 字符类型(字符长度) ,constraint 外键名 FOREIGN key(子表字段)

REFERENCES 父表(父表字段)) engine=INNODB ;

案例:

父表

create table ss (id int(10) PRIMARY key, name varchar(20) )ENGINE=INNODB ;

子表

CREATE table cc (cid int(10) PRIMARY key ,cname VARCHAR(20) ,constraint wj FOREIGN key(cid)
REFERENCES ss(id)) engine=INNODB ;

constraint 外键 名 (指定外键名)
FOREIGN key 子表字段 指定的字段
REFERENCES 父表(父表字段) 引用外部表的主键

(二)建表以后再添加外键

格式:
alter TABLE 子表 add CONSTRAINT 外建名 FOREIGN key (子表字段) REFERENCES 父表(父表字段)

(1)新建两个表

父表

create table xx (id int(10) PRIMARY key ,name varchar(20))engine=INNODB ;

子表

create table yy (yid int(10) PRIMARY key ,yame varchar(20))engine=INNODB ;

(2)再在两表中链接外键
alter TABLE yy add CONSTRAINT wjm FOREIGN key (yid) REFERENCES xx(id)

格式:show create table 表名;

案例:show create table cc

**(三)删除外键 **
格式:
ALTER TABLE 表名 drop FOREIGN key 外键名;
案例:
ALTER TABLE yy drop FOREIGN key wj1;

(四)外键的特点
1、当父表不存在的数据,子表也无法插入数据(子表无法插入数据)

2、父表中存在的数据,子表就可以插入数据(插入数据)

3、删除数据,子表中存在的数据,直接删除父表是无法删除 (要先删除子表数据,再删除父表数据)

4、删除父表的数据,先删除子表,再删除父表

面试题:

1、什么是外键?

2、外键作用?

3、如何创建外键?

4、如何删除外键

5、公司中为什么使用外键?

(1)保存数据的一致性和完整性

(2)公司数据量大,造成数据重复,新旧表维护成本大,使用外键让公司数据进行分类和管理,让基础数据放在主表,子表单一化,避免数据的冗余

posted @   君庭  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示