SQL UNION 操作符

SQL UNION 操作符


SQL UNION 操作符合并两个或多个 SELECT 语句的结果。

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。它可以从多个表中选择数据,并将结果集组合成一个结果集。使用 UNION 时,每个 SELECT 语句必须具有相同数量的列,且对应列的数据类型必须相似。

SQL UNION 语法

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;

UNION 操作符默认会去除重复的记录,如果需要保留所有重复记录,可以使用 UNION ALL 操作符。

SQL UNION ALL 语法

SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2;

注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。


演示数据库

在本教程中,我们将使用 RUNOOB 样本数据库。

下面是选自 "Websites" 表的数据:

mysql>
### SQL 操作符使用说明 SQL 提供了一系列的操作符用于执行各种数据处理任务。以下是完整的 SQL 操作符分类及其功能描述: #### 1. 比较操作符 比较操作符用于在 WHERE 子句中筛选记录,常见的有以下几种: - `=`:等于指定值。 - `>`:大于指定值。 - `<`:小于指定值。 - `>=`:大于或等于指定值。 - `<=`:小于或等于指定值。 - `<>` 或 `!=`:不等于指定值。 这些操作符通常配合条件表达式一起使用,例如: ```sql SELECT * FROM employees WHERE salary > 5000; ``` #### 2. 逻辑操作符 逻辑操作符用于组合多个条件表达式,常见的是: - `AND`:返回满足两个条件的结果集。 - `OR`:返回满足任一条件的结果集。 - `NOT`:否定某个条件的结果。 示例代码如下: ```sql SELECT * FROM students WHERE age >= 18 AND grade = 'A'; ``` #### 3. 谓词操作符 谓词操作符提供更复杂的匹配能力,常用的包括: - `IN`:判断字段值是否属于一组特定的值。 - `BETWEEN`:判断字段值是否在一个范围内。 - `LIKE`:通过模式匹配字符串[^1]。 - `IS NULL` 和 `IS NOT NULL`:检测字段是否有空值。 关于 `LIKE` 的具体用法可以参考以下例子: ```sql -- 查找名字以'A'开头的学生 SELECT * FROM students WHERE name LIKE 'A%'; -- 查找名字中含有'e'的学生 SELECT * FROM students WHERE name LIKE '%e%'; ``` #### 4. 算术操作符 算术操作符主要用于数值计算,支持加减乘除运算: - `+`:加法。 - `-`:减法。 - `*`:乘法。 - `/`:除法。 示例代码如下: ```sql SELECT price, (price * quantity) AS total_cost FROM products; ``` #### 5. 字符串连接操作符 不同的数据库管理系统可能有不同的字符串拼接方式。例如,在 MySQL 中使用 CONCAT 函数;而在 SQL Server 中则可以用 `+` 号来完成字符串连接[^2]。 #### 6. 特殊用途操作符 还有一些特殊用途的操作符,比如: - `EXISTS`:测试子查询是否存在任何行。 - `UNION/INTERSECT/EXCEPT`:集合操作符,分别表示并集、交集和差集。 --- ### 示例综合应用 假设有一个名为 `employees` 的表,我们希望查找工资介于 3000 到 7000 之间且部门编号为 10 或者职位为经理的所有员工,则可编写如下查询语句: ```sql SELECT employee_id, first_name, last_name, department_id, job_title, salary FROM employees WHERE (salary BETWEEN 3000 AND 7000) AND (department_id = 10 OR job_title = 'Manager'); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋进学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值