UNION的使用

UNION的使用

给出将多条查询语句组合成单个结果集,两个表对应的列数和数据类型必须相同

UNION操作符:

返回两个查询结果集的并集,并去除重复记录

UNION ALL操作符

返回两个查询的结果集的并集。不去掉两个结果集的重复部分,重复部分会显示两次

若不需要去除数据或不存在重复数据,尽量使用UNION ALL,

UNION ALL使用资源比UNION少,查询效率高

满外连接操作:LEFT JOIN UNION RIGHT JOIN

sql 复制代码
SELECT last_name,department_name
FROM employees e LEFT JOIN departments d
ON e.'department_id' = d.'department_id'
UNION
SELECT last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e.'department_id' = d.'department_id';

查询121条记录,包括无部门的员工和部门无员工的记录

7种QL JOINS的实现

包括想实现满外连接,可以有多种组合实现

通过UNION ALL也可以实现无重复的满外连接

sql 复制代码
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 employees_id,last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e.'department_id' = d.'department_id';

自然连接

SQL99特殊语法NATURAL JOIN

可以看到两个表中有多个关联字段

那么,两个表连接时,就可以使用这两个关联字段

sql 复制代码
SELECT last_name,department_name
FROM employees e, departments d
WHERE e.'department_id' = d.'department_id'
AND e.'manager_id' = d.'manager_id';

自然连接:

自动查询两张表中相同的字段,并进行等值连接

sql 复制代码
SELECT last_name, department_name
FROM employees NATURAL JOIN departments;

和上面那个结果集一样


USING连接

使用关联字段连接两个表

sql 复制代码
SELECT last_name,department_name
FROM employees e JOIN departments d
ON e.'department_id' = d.'department_id';

当关联字段在两个表中,名字一样时,可以使用USING关键字

sql 复制代码
SELECT last_name, department_name
FROM employees JOIN departments
USING(department_id);

将ON用USING代替,将两个字段进行等值连接

不能用与自连接

相关推荐
颜如玉5 小时前
🤲🏻🤲🏻🤲🏻临时重定向一定要能重定向🤲🏻🤲🏻🤲🏻
java·http·源码
程序员的世界你不懂6 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
星空寻流年6 小时前
设计模式第一章(建造者模式)
java·设计模式·建造者模式
福赖7 小时前
《MySQL基础——用户管理》
mysql·用户管理
gb42152877 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
JAVA不会写7 小时前
在Mybatis plus中如何使用自定义Sql
数据库·sql
IT 小阿姨(数据库)7 小时前
PgSQL监控死元组和自动清理状态的SQL语句执行报错ERROR: division by zero原因分析和解决方法
linux·运维·数据库·sql·postgresql·centos
曾经的三心草7 小时前
Python2-工具安装使用-anaconda-jupyter-PyCharm-Matplotlib
android·java·服务器
Metaphor6927 小时前
Java 高效处理 Word 文档:查找并替换文本的全面指南
java·经验分享·word
ChinaRainbowSea8 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程