mysql连接查询(多表查询)
一、笛卡尔乘积现象
- 表1有m行,表2有n行,两表连接查询结果有m*n行
- 发生原因:没有有效的连接查询条件,导致笛卡尔乘积现象
二、连接查询分类
按年代分类
1. sql192标准:仅支持内连接
2. sql199标准:支持内连接+外连接(左外、右外连接)+交叉连接
按功能分类
1. 内连接(inner)
语法:
select 查询列表
from 表1 别名
inner join 表2 别名
on 连接条件;
注意:
inner可以省略;
- 等值连接
- 非等值连接
- 自连接
2. 外连接
-
左外连接(left outer)
-
右外连接(right outer)
-
全外连接(full outer)
特点:
- 外连接的查询结果包含主表的所有记录
- 外连接查询结果中,从表存在与主表有关联的数据,则显示从表中查询出的数据,不存在则查询的从表相关字段显示为空
- 左外连接:left左边的为主表,右边为从表
- 右外连接:right右边的为主表,左边为从表