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代替,将两个字段进行等值连接

不能用与自连接

相关推荐
fen_fen1 小时前
用户信息表建表及批量插入 100 条数据(MySQL/Oracle)
数据库·mysql·oracle
JH30738 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_9 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble10 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟10 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖10 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
数据知道11 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_124987075311 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha11 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_11 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端