1.概念:
MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。
2.创建语法:
[constraint 外键约束关系的名称] foreign key 从表(外键字段名称) references 主表(主键字段名称)
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
3.constraint(约束) 目前mysql的约束有:
非空约束(not null)
唯一性约束(unique)
主键约束(primary key) PK
外键约束(foreign key) FK
3.案例:
create table country (
id int not null,
name varchar(30),
primary key(id)
);
insert into country values(1,'西欧');
insert into country values(2,'玛雅');
insert into country values(3,'西西里');
insert into country values(4,'huya');
create table solider(
id int not null,
name varchar(30),
country_id int,
primary key(id),
foreign key(country_id) references country(id)
);
insert into solider values(1,'西欧见习步兵',1);
insert into solider values(2,'玛雅短矛兵',2);
insert into solider values(3,'西西里诺曼骑士',3)
insert into solider values(4,'huya',3);
注意:
1、外键字段在创建的时候就应该与主表的类型完全一致(长度啊等),否则创建外键会报错
2、外键表是不能插入主表不存在的数据。
3、外键表不能删除已经关联上的主表数据。
4.总结:
外键是指在从表中建立的,指向主表中的主键,一个主表的主键可以对应多个从表的外键(比如solider表中的3和4都指向country表中的3号国家西西里),典型的一对多。