外键

数据库之外键

==========================、

一、外键的介绍

1、外键的定义

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

2、外键的作用

保持数据的一致性和完整性

3、msyql 数据库中的存储引擎?

myisam (默认)

innodb (外键需要用到innodb存储格式)

4、查看存储引擎

格式:show table status from 库名 where name='表名' ;

案例:show table status from hz017 where name='student2' ;

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

5、查看外键方法:

(1)在navicat中查看

(2)

格式:show create table 表名;

案例:show create table cc

==================================================

二、外键运用

(一)建表时创建外键

(1)创建 engine=INNODB 格式

格式:
REFERENCES 父表(父表字段)) engine=INNODB ;
CREATE table 表名 (字段名 字段类型(字符长度) PRIMARY key , 字段名 字符类型(字符长度) ,constraint 外键名 FOREIGN key(子表字段);

案例:

父表
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 ;

select * from xx ;
SELECT * from yy;
show create table yy;

alter TABLE yy add CONSTRAINT wjm FOREIGN key (yid) REFERENCES xx(id)

==============================================================================

删除外键:

格式:ALTER TABLE 表名 drop foreign key 外键名;

案例:ALTER TABLE yy drop foreign key wjm ;

外键特点:

外键实际操作:

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

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

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

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

{{uploading-image-539099.png(uploading...)}}

=========================================

面试题:

1、什么是外键?

2、外键作用?

3、如何创建外键?

4、如何删除外键

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

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

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

存储过程

posted @ 2024-07-29 09:15  藕丝鲜芋  阅读(6)  评论(0编辑  收藏  举报