在开发中往往还会为他们添加一个 外键约束,保证某一个列的值必须是其他表中的特定列已存在的值。
例如:info.depart_id的值必须是 depart.id中已存在的值。

一对多

在开发项目时,需要根据业务需求去创建很多的表结构,以此来实现业务逻辑,一般表结构有三类:

  1. create table depart(
  2. id int not null auto_increment primary key,
  3. title varchar(16) not null
  4. )default charset=utf8;
  5. create table info(
  6. id int not null auto_increment primary key,
  7. name varchar(16) not null,
  8. email varchar(32) not null,
  9. age int,
  10. depart_id int not null,
  11. constraint fk_info_depart foreign key (depart_id) references depart(id)
  12. )default charset=utf8;

如果表结构已创建好了,额外想要增加外键:

  1. alter table info add constraint fk_info_depart foreign key info(depart_id) references depart(id);

删除外键:

  1. alter table info drop foreign key fk_info_depart;

一对一是特殊的一对多,外键加个unique 关键字就可以了。

多对多

  1. create table boy(
  2. id int not null auto_increment primary key,
  3. name varchar(16) not null
  4. )default charset=utf8;
  5. create table girl(
  6. id int not null auto_increment primary key,
  7. name varchar(16) not null
  8. )default charset=utf8;
  9. create table boy_girl(
  10. id int not null auto_increment primary key,
  11. boy_id int not null,
  12. girl_id int not null,
  13. constraint fk_boy_girl_boy foreign key boy_girl(boy_id) references boy(id),
  14. constraint fk_boy_girl_girl foreign key boy_girl(girl_id) references girl(id)
  15. )default charset=utf8;

如果表结构已创建好了,额外想要增加外键:

  1. alter table boy_girl add constraint fk_boy_girl_boy foreign key boy_girl(boy_id) references boy(id);
  2. alter table boy_girl add constraint fk_boy_girl_girl foreign key boy_girl(girl_id) references girl(id);

删除外键:

  1. alter table info drop foreign key fk_boy_girl_boy;
  2. alter table info drop foreign key fk_boy_girl_girl;