多表操作
实际开发中,一个项目通常需要很多张表才能完成。
例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表 的数据之间存在一定的关系,接下来我们将在单表的基础上,一起学习多表方面的知识。
MySQL关系型数据库
非关系型数据库:ES、Redis…
多表之间的关系
- 一读一:一夫一妻制度
- 一对多:一夫多妻制度
- 多对多:群居制度
表跟表之间的关系,大家可以理解为是实体跟实体的关系的一种映射。比如,导师与学员,订单与客 户,部门与员工等等。
主要关系有三种:
1 | 一对一:比如,一个男的只能取一个女的当老婆。 |
1)一对一关系
在实际工作中,一对一在开发中应用不多,因为一对一完全可以创建成一张表
建立两表的唯一一对一的关系:
- 第一步:将被关联的表主键唯一
- 第二步:建立外键约束,管理该表的唯一主键
案例:一个丈夫只能有一个妻子
1 | CREATE TABLE wife( |
外键唯一
一对一关系创建方式 1 之外键唯一:
添加外键列 wid,指定该列的约束为唯一(不加唯一约束就是一对多关系)
1 | ALTER TABLE husband ADD wid INT UNIQUE; |
添加外键约束
1 | alter table husband add foreign key (wid) references wife(id); |
主键做外键
一对一关系创建方式 2 之主键做外键:(大家下去自己练习) 思路:使用主表的主键作为外键去关联从表的主键
2)一对多关系
常见实例:一个分类对应多个商品,客户和订单,分类和商品,部门和员工.
总结:有外键的就是多的一方。
注意事项:一对多关系和一对一关系的创建很类似,唯一区别就是外键不唯一
一对多关系创建:
- 添加外键列
- 添加外键约束
3)多对多关系
常见实例:学生和课程、用户和角色
注意事项:需要中间表去完成多对多关系的创建,多对多关系其实就是两个一对多关系的组合
多对多关系创建:
创建中间表,并在其中创建多对多关系中两张表的外键列
在中间表中添加外键约束
在中间表中添加联合主键约束