1.分类
- 内连接
等值
非等值
自连接 - 外连接
左外
右外
全外(mysql不支持)
2.语法
1、内连接
语法:
select 查询列表
from 表1 别名
【inner】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;
特点:
①表的顺序可以调换
②内连接的结果=多表的交集
③n表连接至少需要n-1个连接条件
分类:
等值连接
非等值连接
自连接
2、外连接
语法:
select 查询列表
from 表1 别名
left|right|full【outer】 join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 子句;
特点:
①查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
②left join 左边的就是主表,right join 右边的就是主表
full join 两边都是主表
③一般用于查询除了交集部分的剩余的不匹配的行
3、交叉连接
语法:
select 查询列表
from 表1 别名
cross join 表2 别名;
特点:
类似于笛卡尔乘积
多表连接
- 连接 n个表,至少需要 n-1个连接条件。 例如:连接
三个表,至少需要两个连接条件
例如:
#两表关联后作为一张新表再join on第三张表
SELECT employee_id, city, department_name
FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;
Join连接总结
image.pngSELECT <select_list>
FROM A
LEFT JOIN B
ON A.key=B.key
image.png
SELECT <select_list>
FROM A
RIGHT JOIN B
ON A.key=B.key
image.png
#1.内连接
SELECT <select_list>
FROM A
INNER JOIN B
ON A.key=B.key
#2.where
select <select_list>
FROM table1 A,table2 B
WHERE A.key=B.key
image.png
SELECT <select_list>
FROM A
LEFT JOIN B
ON A.key=B.key
WHERE B.key is null;
image.png
SELECT <select_list>FROM A
RIGHT JOIN B
ON A.key=B.keyWHERE A.key is null;
网友评论