四、MySql -- 多表连接

227 阅读1分钟

连接查询

含义:多表查询,当查询的字段来自于多个表或者涉及到多个表

笛卡尔乘积现象:表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 查询列表
from1 别名 【连接类型】
join2 别名  on 连接条件
where 筛选条件;
内连接 inner
外连接
  • 左外连接 left
  • 右外连接 right
  • 全连接 full
交叉连接 cross

一)内连接

select 查询列表
from1 
inner join2 
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 ...