- SQL教程
- SQL - 主页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL数据库
- SQL-创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL-备份数据库
- SQL表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 更改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - 选择进入
- SQL - 插入选择
- SQL - 更新查询
- SQL - 删除查询
- SQL - 对结果进行排序
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL-Where 子句
- SQL - 顶部子句
- SQL - 不同子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL-Having 子句
- SQL - 与与或
- SQL - 布尔(位)运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY、ALL 运算符
- SQL - EXISTS 运算符
- SQL-案例
- SQL - NOT 运算符
- SQL - 不等于
- SQL - 为空
- SQL - 不为空
- SQL - 非空
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION 与 UNION ALL
- SQL - 相交运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用联接
- SQL-内连接
- SQL-左连接
- SQL-右连接
- SQL-交叉连接
- SQL-全连接
- SQL-自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接与右连接
- SQL - 联合与连接
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL-外键
- SQL - 复合键
- SQL - 备用键
- SQL索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL-唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高级SQL
- SQL - 通配符
- SQL - 注释
- SQL-注入
- SQL-托管
- SQL - 最小值和最大值
- SQL - 空函数
- SQL - 检查约束
- SQL - 默认约束
- SQL-存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL-自动递增
- SQL - 日期和时间
- SQL-游标
- SQL - 公用表表达式
- SQL - 分组依据与排序依据
- SQL - IN 与 EXISTS
- SQL——数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数字函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL-JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问题与解答
- SQL - 快速指南
- SQL - 有用的函数
- SQL - 有用的资源
- SQL - 讨论
SQL - UNION 与 UNION ALL
UNION和UNION ALL运算符只是代数集合运算符的 SQL 实现。它们都用于从多个表中检索行并将它们作为一个表返回。这两个运算符之间的区别在于 UNION 仅返回不同的行,而 UNION ALL 返回表中存在的所有行。
然而,为了让这些操作员在这些表上工作,他们需要遵循下面给出的条件 -
- 要合并的表必须具有相同数量的列和相同的数据类型。
- 行数不必相同。
一旦满足这些条件,UNION 或 UNION ALL 运算符就会将多个表中的行作为结果表返回。
第一个表的列名将成为结果表的列名,第二个表的内容将合并到相同数据类型的结果列中。
什么是联盟?
UNION 是 SQL 中的一种运算符/子句,其工作原理类似于关系代数中的 union 运算符。它只是组合来自联合兼容的多个表的信息。
只有表中不同的行才会添加到结果表中,因为 UNION 会自动消除所有重复记录。
句法
以下是 SQL 中 UNION 运算符的语法 -
SELECT * FROM table1 UNION SELECT * FROM table2;
例子
让我们首先创建两个表 COURSES_PICKED 和 EXTRA_COURSES_PICKED,它们具有相同数量的列和相同的数据类型。
使用以下查询创建表 COURSES_PICKED -
CREATE TABLE COURSES_PICKED( STUDENT_ID INT NOT NULL, STUDENT_NAME VARCHAR(30) NOT NULL, COURSE_NAME VARCHAR(30) NOT NULL );
借助下面给出的查询将值插入到 COURSES_PICKED 表中 -
INSERT INTO COURSES_PICKED VALUES (1, 'JOHN', 'ENGLISH'), (2, 'ROBERT', 'COMPUTER SCIENCE'), (3, 'SASHA', 'COMMUNICATIONS'), (4, 'JULIAN', 'MATHEMATICS');
该表将显示如下 -
学生卡 | 学生姓名 | 课程名 |
---|---|---|
1 | 约翰 | 英语 |
2 | 罗伯特 | 计算机科学 |
3 | 萨莎 | 通讯 |
4 | 朱利安 | 数学 |
现在,让我们使用以下查询创建另一个表 EXTRA_COURSES_PICKED -
CREATE TABLE EXTRA_COURSES_PICKED( STUDENT_ID INT NOT NULL, STUDENT_NAME VARCHAR(30) NOT NULL, EXTRA_COURSE_NAME VARCHAR(30) NOT NULL );
以下是将值插入“EXTRA_COURSES_PICKED”表的查询 -
INSERT INTO EXTRA_COURSES_PICKED VALUES (1, 'JOHN', 'PHYSICAL EDUCATION'), (2, 'ROBERT', 'GYM'), (3, 'SASHA', 'FILM'), (4, 'JULIAN', 'MATHEMATICS');
该表将创建如下所示 -
学生卡 | 学生姓名 | 课程_PICKED |
---|---|---|
1 | 约翰 | 体育 |
2 | 罗伯特 | 健身房 |
3 | 萨莎 | 电影 |
4 | 朱利安 | 数学 |
现在,让我们使用 UNION 查询组合这两个表,如下所示 -
SELECT * FROM COURSES_PICKED UNION SELECT * FROM EXTRA_COURSES_PICKED;
输出
执行 UNION 操作后得到的结果表如下 -
学生卡 | 学生姓名 | 课程名 |
---|---|---|
1 | 约翰 | 英语 |
2 | 罗伯特 | 计算机科学 |
3 | 萨莎 | 通讯 |
4 | 朱利安 | 数学 |
1 | 约翰 | 体育 |
2 | 罗伯特 | 健身房 |
3 | 萨莎 | 电影 |
什么是UNION ALL?
UNION ALL 也是 SQL 中的一种运算符/子句,用于将多个表合并为一个表。但是,此运算符还会保留结果表中的重复行。
假设有两个表,其中一个包含玩家在国际比赛中参加的比赛数,另一个包含玩家在国内参加的比赛数。
正如我们在上表中看到的,Kohli 参加了 234 场国际比赛和 234 场国内比赛。尽管这些列中的数据相同,但它们都是单独的匹配项。需要在显示玩家参加的总比赛的结果表中包含这两行。因此,在这种情况下我们使用 UNION ALL 运算符。
句法
以下是 SQL 中 UNION ALL 运算符的语法 -
SELECT * FROM table1 UNION ALL SELECT * FROM table2;
例子
在下面的示例中,让我们使用下面给定的查询对上面给出的相同示例表执行 UNION ALL 操作:“COURSES_PICKED”和“EXTRA_COURSES_PICKED” -
SELECT * FROM COURSES_PICKED UNION ALL SELECT * FROM EXTRA_COURSES_PICKED;
输出
结果表显示如下 -
学生卡 | 学生姓名 | 课程名 |
---|---|---|
1 | 约翰 | 英语 |
2 | 罗伯特 | 计算机科学 |
3 | 萨莎 | 通讯 |
4 | 朱利安 | 数学 |
1 | 约翰 | 体育 |
2 | 罗伯特 | 健身房 |
3 | 萨莎 | 电影 |
4 | 朱利安 | 数学 |