一、多表关系
1.基本概述
概述:项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间互相关联,所以各个表结构之间也存在着各种联系。
2.表关系
数据库表关系有三种:一对多(多对一),多对多,一对一。
一对一关系
A表中的一条记录对应B表中一条记录
B表中的一条记录对应A表中的一条记录
举例:用户信息表–用户常用信息表
创建一个主要信息表,展示信息表 ,创建展示信息表的时候关联主要信息表...
一对多关系
A表中的一条记录对应B表中的多条记录.
B表中的一条记录对应A表中的一条记录.
这种关系叫一对多关系,A表示一方,B表示多方.
一方叫主表,多方叫从表
举例:部门和员工
如果要设计一对多的关系,先设计主表,再设计从表.
在多的一方建立外键,指向一方的主表的主键.
多对多关系
A表中的一条记录对应B表中的多条记录.
B表中的一条记录对应A表中的多条记录.
这两张表就是 多对多的关系.
举例: 订单表和商品表
先创建 多对多 这两个表
创建 订单表 和 商品表
再创建 订单商品中间表
再让 中间作为从方 关联 订单表和商品表...
二、多表的分类
概述
:
连接查询
交叉连接
产生笛卡尔积,通常没有实际业务意义
关键字:cross join
内连接查询:相当于查询A、B交集部分数据
外连接查询:
左外连接:查询左表所有数据,以及两张表交集部分数据
右外连接:查询右表所有数据,以及两张表交集部分数据
自连接:当前表与自身的连接查询,自连接必须使用表别名
子查询(嵌套查询)
三、多表查询语法
概述
:多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据。
连接查询
内连接查询
- 语法
-- 隐式内连接 (隐藏了关键字 inner join on)
select 字段列表 from 表1,表2... where 条件;
-- 显式内连接
select 字段列表 from 表1 [inner] join 表2 on 条件 inner join 表3 on 条件;
两种语法查询出来的结果是一样的!!
内连接相当于查询A B 交集数据
外连接查询
- 语法
-- 左外连接
select 字段列表 from 表1 left [outer] join 表2 on 条件;
-- 右外连接
select 字段列表 from 表2 right [outer] join 表2 on 条件;
左外连接:相当于查询A表所有数据和交集部分数据
右外连接:相当于查询B表所有数据和交集部分数据
子查询
-
概念
查询中嵌套查询,称嵌套查询为子查询。
-- 语法
select * from 表1 where 字段1 = (select 字段2 from 表2);
-
子查询根据查询结果不同,作用不同
- 子查询语句结果是单行单列,子查询语句作为条件值,使用 = != > < 等进行条件判断
- 子查询语句结果是多行单列,子查询语句作为条件值,使用 in 等关键字进行条件判断
- 子查询语句结果是多行多列,子查询语句作为虚拟表
版权声明:本文为weixin_44430860原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。