连接查询
含义:多表查询,当查询的字段来自于多个表或者涉及到多个表
笛卡尔乘积现象:表1 m行,表2 n行,结果= m*n行
功能分类:
内连接
等值连接
非等值连接
自连接
外连接
左外连接
右外连接
全外连接
交叉连接
一、SQL92标准
1、等值连接
案例一:查询员工名和对应的部门名
select last_name,department_name
from employees,department
where employees.department_id = department.department_id
2、非等值连接
3、自连接
案例:查询员工名和上级名字
select e.last_name,m.last_name
from employees e,employees m
where e.manager_id = m.employees_id
二、SQL99语法
语法:
select 查询列表
from 表1 别名 【连接类型】
join 表2 别名 on 连接条件
where 筛选条件;
内连接 inner
外连接
- 左外连接 left
- 右外连接 right
- 全连接 full
交叉连接 cross
一)内连接
select 查询列表
from 表1
inner join 表2
on 连接条件
二)自连接
案例:查询员工名和上级名字
select e.last_name,m.last_name
from employees e
JOIN EMPLOYEES M
ON E.MANAGER_ID = M.EMPLOTEES.ID
二)外连接
查询一个表有另外一个表没有的情况,显示主表内的所有记录
如果从表中没有可匹配的,则显示null
1、左外连接:left左边的是主表
select b.name,bo.*
from beaty b
left join boys bo
on ...
2、右外连接:right右边的是主表
select b.name,bo.*
from boys bo
left join beaty b
on ...