做网站资源知乎,搭建公司,汝南企业网站建设,建设集团英文缩写基本介绍
作用#xff1a;连接查询#xff08;Join#xff09;操作#xff0c;用于联结多个表以获取更全面和准确的数据
基本分类#xff1a;
内连接#xff1a;相当于查询A、B交集部分数据#xff08;去掉迪卡尔积无效组合#xff09;外连接#xff1a; 左外连接连接查询Join操作用于联结多个表以获取更全面和准确的数据
基本分类
内连接相当于查询A、B交集部分数据去掉迪卡尔积无效组合外连接 左外连接查询左表所有数据以及两张表交集部分数据右外连接查询右表所有数据以及两张表交集部分数据自连接当前表与自身的连接查询自连接必须使用表别名
内连接
语法两种语法不同作用相同
隐式内连接select 字段列表 from 表1 , 表2 where 条件 ... ;
显式内连接select 字段列表 from 表1 [ inner ] join 表2 on 连接条件 ... ;
-- 内连接 查询员工与部门关联信息
select employees.name 员工名字, departments.name 部门名称
from employees
inner join departments
on employees.department_id departments.id 外连接左外连接和右外连接可以相互替换
左外连接
语法select 字段列表 from 表1 left [ outer] join 表2 on 条件 ... ;
-- 左外连接 从员工表查询对应部门
select employees.name, departments.name 部门名称
from employees
left join departments
on employees.department_id departments.id
limit 5,6; 右外连接
语法select 字段列表 from 表1 right [ outer] join 表2 on 条件 ... ;
-- 右外连接 从部门表查询对应员工信息
select employees.name, departments.name 部门名称
from employees
right join departments
on employees.department_id departments.id
limit 5,6; 全连接
MySQL不支持全连接的关键字(full join)但可以通过左连接和右连接的组合实现全连接
-- 全连接 查询员工和对应部门的对应关系
select employees.name, departments.name 部门名称
from employees
left join departments
on employees.department_id departments.idunionselect employees.name, departments.name 部门名称
from employees
right join departments
on employees.department_id departments.id
limit 5,8; 自连接
语法select 字段列表 from 表A 别名A join 表A 别名B on 条件 ... ;
-- 自连接 查询每个员工和对应的领导名字
SELECT e1.name AS 员工姓名, e2.name AS 上级领导姓名
FROM employees e1
INNER JOIN employees e2
ON e1.manager_id e2.id;
也可以实现联合查询
SELECT 字段列表 FROM 表A 条件 ... union [ all] SELECT 字段列表 FROM 表B 条件....;
-- 查询薪水小于5000 或 年龄大于50的员工
select * from employees where salary 5000
union
select * from employees where age 50;
注意点
对于联合查询的多张表的列数必须保持一致字段类型也需要保持一致。union all 会将全部的数据直接合并在一起(不去重union 会对合并之后的数据去重。 上一篇MySQL 多表关系多表查询 一
下一篇MySQL 子查询多表查询 三