外键:一个实体(主表)的某个字段对应另一个实体(从表)的主键,表达一种约束关系。

一、创建\删除外键

(一)使用navicat添加外键:

mysql创建外键作为主键 mysql建立外键语句_表名

(二) sql语句设置外键:

1、创建表时直接设置

语法:constraint 外键名 foreign key(外键列) references 从表名(对应列)

注意:外键和对应列的数据类型器需要一致;对应列需要是从表的主键;不同外键可以指向同一对应列,即一对多;

mysql创建外键作为主键 mysql建立外键语句_数据_02

2、已有表添加外键

语法:alter table 主表名 add foreign key(外键列) references 从表(对应列);

注意:若从表中已有数据,外键列需要满足对应条件,否则创建不成功,

 

mysql创建外键作为主键 mysql建立外键语句_表名_03

 3、已有表删除外键

语法:alter table 主表名 drop foreign key 外键名;

 注意:创建外键时需要进行命名,方便之后的删除等操作,

mysql创建外键作为主键 mysql建立外键语句_表名_04

二、外键应用

(一)一对一表链接

 1、A left join B on A.xxx=B.xxx

语法:select * from 主表名 left join 从表名 on 主表.主键 = 从表.对应列 where 条件

说明:以A为主,显示A中所有数据,以及B中与A相关联的数据,

mysql创建外键作为主键 mysql建立外键语句_外键_05

2、 A right join B on A.xxx=B.xxx

说明:A right join B on A.xxx=B.xxx 与 B left join A on B.xxx=A.xxx 相同,不常用,

mysql创建外键作为主键 mysql建立外键语句_mysql创建外键作为主键_06

  

mysql创建外键作为主键 mysql建立外键语句_mysql创建外键作为主键_07

 

3、A inner join B on A.xxx=B.xxx

说明:返回A、B中同时满足on的数据,

mysql创建外键作为主键 mysql建立外键语句_mysql创建外键作为主键_08

(二)一对多表链接:依赖字典表

mysql创建外键作为主键 mysql建立外键语句_表名_09

(三)多对多表链接:依赖于关系表

 表数据之间的对应,不是唯一的,需要在字典表的基础上,创建关系表记录对应关系,

以男女朋友关系为例:man和faleman对应同一张关系表,完成多对多的关系映射,

mysql创建外键作为主键 mysql建立外键语句_mysql创建外键作为主键_10

  

mysql创建外键作为主键 mysql建立外键语句_mysql创建外键作为主键_11

  

mysql创建外键作为主键 mysql建立外键语句_mysql创建外键作为主键_12

mysql创建外键作为主键 mysql建立外键语句_mysql创建外键作为主键_13