一、含义
当查询中涉及到了多个表的字段,需要使用多表连接
select 字段1,字段2
from 表1,表2
笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
如何解决:添加有效的连接条件
二、分类
按年代分类:
sql92
等值连接
非等值连接
自连接
也支持一部分外连接(用于 orcale、sqlserver,mysql 不支持)
sql99【推荐使用】
内连接
等值连接
非等值连接
自连接
外连接
左外连接
右外连接
全外连接(MySQL 不支持,也不报错)
交叉连接
三、SQL92 语法
1、等值连接
语法:
select 查询列表
from 表1 别名,表2 别名
where 表1.key = 表2.key
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
特点:
①一般为表起别名
②多表的顺序可以调换
③n 表连接至少需要 n - 1个连接条件
④等值连接的结果是多表的交集部分
2、非等值连接
语法:
select 查询列表
from 表1 别名,表2 别名
where 非等值的连接条件
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
3、自连接
语法:
select 查询列表
from 表 别名1,表 别名2
where 别名1.key = 别名2.key
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
四、SQL99 语法
1、内连接
2、外连接
3、交叉连接