连接查询
一、含义二、分类sql92标准sql99标准
三、sql92语法1.等值连接语法特点
2.非等值连接语法
3.自连接语法
四、sql99语法1.内连接语法特点分类
2.外连接语法特点交叉连接
一、含义
当查询中涉及到了多个表的字段,就需要使用多表连接。
SELECT 字段
1,字段
2...
FROM 表
1,表
2...;
当查询多个表时,没有添加有效的连接条件,会导致多个表所有行实现完全连接,这称为笛卡尔乘积。要想避免,就要添加有效的连接条件。
二、分类
按功能分类
内连接
等值连接 非等值连接 自连接
外连接
左外连接 右外连接 全外连接
交叉连接
sql92标准
支持内连接,也支持一部分外连接(用于oracle、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 等值的连接条件
AND 筛选条件
GROUP BY 分组字段
HAVING 分组后的筛选
ORDER BY 排序字段
四、sql99语法
1.内连接
语法
SELECT 查询列表
FROM 表
1 别名
INNER JOIN 表
2 别名
ON 连接条件
WHERE 筛选条件
GROUP BY 分组字段
HAVING 分组后的筛选
ORDER BY 排序字段
特点
表的顺序可以调换内连接的结果=多表的交集n表连接至少需要n-1个连接条件
分类
等值连接非等值连接自连接
2.外连接
语法
SELECT 查询列表
FROM 表
1 别名
LEFT/RIGHT/FULL OUTER JOIN 表
2 别名
ON 连接条件
WHERE 筛选条件
GROUP BY 分组字段
HAVING 分组后的筛选
ORDER BY 排序字段
特点
查询的结果=主表中所有的行。如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示nullleft join左边的是主表,right join右边的是主表,full join两边都是主表一般用于查询除了交集部分的剩余不匹配的行
交叉连接
特点:类似于笛卡尔乘积
SELECT 查询列表
FROM 表
1 别名
CROSS JOIN 表
2 别名
;