肖SIR__数据库之外键_15.1

数据库之外键

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

一、外键的介绍

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  格式

格式:

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 ;

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、删除父表的数据,先删除子表,在删除父表

 

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

面试题:

1、什么是外键?

2、外键作用?

3、如何创建外键?

4、如何删除外键

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

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

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

posted @ 2022-03-06 19:49  xiaolehua  阅读(396)  评论(0编辑  收藏  举报