连接查询又称多表查询,查询到的字段来自于多个表中的数据。
一、 连接查询的分类和语法
1.分类
按标准分:
92标准:只支持内连接
99标准:支持内连接和、外连接和全外连接
功能进行分类:
内连接:inner
等值连接
非等值连接
自连接
外连接:
左外连接left 【outer】
右外连接right【outer】
全外连接(mysql不支持) full【outer】
交叉连接cross
笛卡尔集:没有加约束条件。若表1有m行数据,表2有m2行数据,最终有m*m2行数据。
2.语法
select 查询列表
from 表1 别名 【连接类型】
join 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序列表】
二、内连接(inner)
1.等值连接
语法:select 查询列表 from 表1 别名1 [inner join] 表2 别名 [on]/[where] 连接条件
特点:
①多表等值连接的结果为多表的交集部分;
②m个表的连接,至少需要m-1个连接条件
③各个表的先后顺序没有要求
④可以结合其他函数和字句,比如:排序、分组、筛选等
⑤可以用inner join on连接也可以使用from多个表
⑥inner join on 是sql99语法规范,提高了分离性、可读性。
2.非等值连接
3.自连接
查询出员工名和上级名
三、外连接
用于查询一个表中存在另一个表中不存在的数据
1.特点
①外连接的查询结果为主表中的所有数据,若从表中有和他匹配的,则显示匹配的数据;若没有与之匹配的数据,则显示null
②左外连接,left join 左边是主表;右外连接,right join 右边是主表
③左外和右外交换两个表的顺序,可以实现相同的查询结果
④全外连接=内连接+表1中有表2中没有的+表2中有表1中没有的
2.左外连接
3.右外连接
4.全连接