首先介绍一下什么是外键?

外键用于与另外一张表的关联,保证数据的完整性。

 

创建外键的语法是:

foreign key(外键名称)references 父表

举个例子:

创建父表:

create table my_class(id int primary Auto_increment,class varchar(20));

创建子表,并用外键关联起来

create table student(name varchar(20),number int,id int,foreign key(id) references my_class(id));

那么外键是随便就可以创建么,需要什么条件呢?

1.数据库的存储引擎是innodb,如果不是Innodb,外键可以创建,但是没有约束效果;

2.外键的字段类型必须与父表的主键要求类型一致

3.一张表中的外键名称不能重复

4.增加外键的字段,必须保证数据与主键一致。

 

看完这4个条件,你或许对存储引擎是什么有疑问?那么这里简单介绍一下

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎

存储引擎的选择

不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:

功 能

MYISAM

Memory

InnoDB

Archive

存储限制

256TB

RAM

64TB

None

支持事物

No

No

Yes

No

支持全文索引

Yes

No

No

No

支持数索引

Yes

Yes

Yes

No

支持哈希索引

No

Yes

No

No

支持数据缓存

No

N/A

Yes

No

支持外键

No

No

Yes

No

 

可能你也会问什么是外键的约束效果呢?

外键约束就是对父表和子表的约束;

外键约束有3种:

1.district:严格模式,父表不能删除已经被子表引用的数据

2.cascade:级联模式,父表删除,子表的数据也会被删除

3.set null:置空模式,父表删除,子表的数据(外键字段)被置空

 

指定模式的语法:

foreign key(外键字段) references 父表(主键) on delete 模式 on update 模式;