IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL 使用SQL99实现7种JOIN操作 -> 正文阅读

[大数据]MySQL 使用SQL99实现7种JOIN操作

网课指路:MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!_哔哩哔哩_bilibili

预备知识:

·内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
·外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的
行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL)。
·如果是左外连接,则连接条件中左边的表也称为 主表 ,右边的表称为 从表 。
·如果是右外连接,则连接条件中右边的表也称为 主表 ,左边的表称为 从表 。

SQL99语法实现多表查询
???????????????基本语法
????????使用JOIN...ON 子句创建连接的语法结构:
SELECT table1.column, table2.column,table3.column 
FROM table1 JOIN table2 ON table1 和 table2 的连接条件 
JOIN table3 ON table2 和 table3 的连接条件

????????它的嵌套逻辑类似我们使用的 FOR 循环:

for t1 in table1:
    for t2 in table2:
        if condition1:
            for t3 in table3: 
                if condition2:
                     output t1 + t2 + t3

SQL99 采用的这种嵌套结构非常清爽、层次性更强、可读性更强 即使再多的表进行连接也都清晰 语法说明:
可以使用 ON 子句指定额外的连接条件
????????这个连接条件是与其它条件分开的。

ON 子句使语句具有更高的易读性
????????关键字 JOIN、
INNER JOINCROSS JOIN 的含义是一样的,都表示内连接

内连接(INNER JOIN)的实现
? ? ? ? 语法:
SELECT 字段列表 
FROM A表 INNER JOIN B表 
ON 关联条件 
WHERE 等其他子句;
?
外连接(OUTER JOIN)的实现
????????左外连接(LEFT OUTER JOIN)
? ? ??
#实现查询结果是A 
SELECT 字段列表 
FROM A表 LEFT JOIN B表 
ON 关联条件 
WHERE 等其他子句;

????????右外连接(RIGHT OUTER JOIN)

#实现查询结果是B 
SELECT 字段列表 
FROM A表 RIGHT JOIN B表 
ON 关联条件 
WHERE 等其他子句;
满外连接 (FULL OUTER JOIN)
????????满外连接的结果 = 左右表匹配的数据 + 左表没有匹配到的数据 + 右表没有匹配到的数据。
SQL99 是支持满外连接的。使用 FULL JOIN FULL OUTER JOIN 来实现。需要注意的是,MySQL 不支持 FULL JOIN ,但是可以用 LEFT JOIN UNION RIGHT join代替。

UNION操作符

?UNION 操作符返回两个查询的结果集的并集,去除重复记录。

UNION ALL操作符

UNION ALL操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。

?tips:执行UNION ALL语句时所需要的资源比UNION语句少。如果明确知道合并数据后的结果数据 不存在重复数据,或者不需要去除重复的数据,则尽量使用UNION ALL语句,以提高数据查询的效率。

7种SQL JOINS的实现

# 中图:内连接 A B
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 LEFT JOIN departments d
ON e. `department_id` = d. `department_id` ;
# 右上图:右外连接
SELECT employee_id,last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e. `department_id` = d. `department_id` ;
# 左中图: A - A B
SELECT employee_id,last_name,department_name
FROM employees e LEFT JOIN departments d
ON e. `department_id` = d. `department_id`
WHERE d. `department_id` IS NULL

?#右中图:B-AB

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

#左下图:满外连接

# 左中图 + 右上图 A B
SELECT employee_id,last_name,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,last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e. `department_id` = d. `department_id` ;
# 右下图
# 左中图 + 右中图 A B- A B 或者 (A - A B) ∪ ( B - A B
SELECT employee_id,last_name,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,last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e. `department_id` = d. `department_id`
WHERE e. `department_id` IS NULL
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:23:07  更:2022-04-27 11:27:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:45:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码