mysql多表查询(下)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: mysql多表查询(上)

四、mysql99语法的七种join的操作

MySQL虽然不支持满外连接,但是我们可以用其他方式弥补

1.union操作符

开发中能用union all就不要用union

这里是因为union中间有重复的项目,但是union all没有

2.具体实现方法

根据上面的图片

2.1 内连接

SELECT employee_id , department_name
FROM employees e JOIN departments d
ON e.department_id =  d.department_id;

2.2 左外连接

SELECT employee_id , department_name
FROM employees e LEFT JOIN departments d
ON e.department_id =  d.department_id;

2.3 右外连接

SELECT employee_id , department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id =  d.department_id;

2.4 左中图

注意:这里执行顺序是先where语句里面执行,所以得出d.DEPARTMENT_ID 为 NULL ,这样e.DEPARTMENT_ID = NULL的字段其实就是我们要的A表部分数据。

SELECT employee_id , department_name
FROM employees e LEFT JOIN departments d
ON e.department_id =  d.department_id
WHERE d.DEPARTMENT_ID IS NULL;

2.5 右中图

和左中图同理

SELECT employee_id , department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id =  d.department_id
WHERE e.employee_id IS NULL;

2.6 满外连接

方式1:

左中图 union all 右外连接(自动去重)

SELECT employee_id , department_name
FROM employees e LEFT JOIN departments d
ON e.department_id =  d.department_id
WHERE d.DEPARTMENT_ID IS NULL
UNION ALL
SELECT employee_id , department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id =  d.department_id;

方法2:

右中图 union all 左外连接(自动去重)

SELECT employee_id , department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id =  d.department_id
WHERE e.employee_id IS NULL
UNION ALL
SELECT employee_id , department_name
FROM employees e LEFT JOIN departments d
ON e.department_id =  d.department_id;

方法三:

SELECT employee_id , department_name
FROM employees e LEFT JOIN departments d
ON e.department_id =  d.department_id
WHERE d.DEPARTMENT_ID IS NULL
UNION ALL
SELECT employee_id , department_name
FROM employees e JOIN departments d
ON e.department_id =  d.department_id
UNION ALL
SELECT employee_id , department_name
FROM employees e RIGHT JOIN departments d
ON e.department_id =  d.department_id
WHERE e.employee_id IS NULL;

五、mysql99语法的新特性

1.自然连接

我们先看看普通连接

employees 和 departments 只有两个相同的字段department_id和manager_id

SELECT employee_id , last_name,department_name
FROM employees e JOIN departments d
ON e.department_id =  d.department_id
AND e.manager_id =  d.manager_id;

自然连接就是相同字段相等的属性保留

SELECT employee_id , last_name,department_name
FROM employees e NATURAL JOIN departments d;

2.using

普通语法

SELECT employee_id , last_name,department_name
FROM employees e JOIN departments d
ON e.department_id =  d.department_id;

SELECT employee_id , last_name,department_name
FROM employees e JOIN departments d
USING (department_id);


总结

上面就是多表查询常用的方法和语句,虽然不是全部,但是也是大多数情况能碰到的了,希望大家好好学习,最后能给我点个👍吗

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 存储 关系型数据库
轻松入门MySQL:数据库关联与多表查询,构建高效的业务决策引擎(6)
轻松入门MySQL:数据库关联与多表查询,构建高效的业务决策引擎(6)
117 0
|
5月前
|
关系型数据库 MySQL
3. Mysql 如何实现多表查询
MySQL多表查询主要包括内连接和外连接。内连接有隐式和显式:隐式是通过`From 表A, 表B where 连接条件`,显式是`From 表A inner join 表B on 连接条件`。外连接包括左外连接(`left join`)、右外连接(`right join`)和全外连接(较少使用)。此外,还有交叉连接(`cross join`),但也较少使用。
46 0
|
4月前
|
关系型数据库 MySQL 数据库
关系型数据库MySQL开发要点之多表查询2024详解
关系型数据库MySQL开发要点之多表查询2024详解
31 2
|
4月前
|
关系型数据库 MySQL 数据库
MySQL数据库开发之多表查询数据准备及案例实操
MySQL数据库开发之多表查询数据准备及案例实操
41 1
|
4月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础第四篇(多表查询与事务)
MySQL数据库基础第四篇(多表查询与事务)
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
42 5
|
4月前
|
关系型数据库 MySQL 数据库
MySQL数据库——多表查询(4)-实例练习、多表查询总结
MySQL数据库——多表查询(4)-实例练习、多表查询总结
60 1
|
4月前
|
SQL 关系型数据库 MySQL
MySQL数据库——多表查询(3)-自连接、联合查询、子查询
MySQL数据库——多表查询(3)-自连接、联合查询、子查询
60 1
|
4月前
|
关系型数据库 MySQL 数据库
MySQL数据库——多表查询(2)-内连接、外连接
MySQL数据库——多表查询(2)-内连接、外连接
35 1
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL进阶之路 | 基础篇】MySQL之多表查询
【MySQL进阶之路 | 基础篇】MySQL之多表查询