1、介绍
在实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表、商品表、订单表等多张表。且这些表的数据之间存在一定的关系。
2、多表关系
Mysql多表之间的关系可以概括为:一对一、一对多/多对一、多对多关系。
(1)一对一关系
例如:一个学生只有一张身份证;一张身份证只能对应一个学生。
(2)一对多/多对一关系
例如:一个 部门有多个员工(一对多关系),多个员工对应一个部门(多对一关系)。
(3)多对多关系
例如:一个学生可以选择很多门课程,一个课程可以被很多学生选择。
多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,将多对多关系拆成一对多的关系。
3、外键约束
(1)介绍
Mysql外键约束(foreign key )是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子 表)。
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性与完整性。
比如:一个水果摊,只有苹果、桃子、李子、西瓜等4中水果,那么你来到水果摊要买水果就只能选择苹果、桃子、李子和西瓜。其它的水果都是不能购买的。
(2)特点
1))主表必须已经存在于数据库中,或者是当前正在创建的表。
2))必须为主表定义主键
3))主键不能包含空值,但允许在外键中出现空值,也就是说,只要外键的每个非空值出现在指定的外键中,这个外键的内容就是对的。
4))在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。
5))外键中列的数目必须和主表的主键中列的数目相同(意思是:若主键列是单列主键,则外键列也必须是单列的。若主键列是联合主键则外键列也必须是联合的)。
6))外键中列的数据类型必须和主表主键中对应列的数据类型相同。
4、操作
(1)操作---创建外键约束
方式一:在创建表时设置外键约束
在create table 语句中,通过foreign key 关键字来指定外键,具体的语法格式如下:
[constraint <外键名>] foreign key (字段名 [, 字段名2,...]) references <主表名> (主键列1,[ ,主键列2,...]);
注意:[ ...] 代表可以省略。
示例:
创建主表:
创建子表: