Oracle中的集合操作符

Oracle集合操作符详解
本文详细介绍了Oracle数据库中集合操作符的使用,包括并集(union)、差集(minus)和交集(intersect)。通过具体实例,展示了如何利用这些操作符处理查询结果集,去除重复数据,以及获取两个集合的重复和不重复部分。

Oracle中的集合操作符

集合操作符属于sql操作符的一种。主要就是对查询的结果集进行求交集,差集,并集操作。

求并集(union)

以scott用户的emp表为例:
在这里插入图片描述
union会去掉重复的数据,而union all不会,例如:
在这里插入图片描述

求差集(minus)

以scott用户的emp表为例:
在这里插入图片描述
minus会去掉两个集合的重复部分。

求交集(intersect)

以scott用户的emp表为例:
在这里插入图片描述
intersect会保留两个集合的重复部分,去掉不重复部分。

Oracle 中,集合操作符主要包括 `UNION`、`UNION ALL`、`INTERSECT` 和 `MINUS`,用于对两个或多个查询结果集进行集合运算[^1]。除此之外,Oracle 还有许多其他类型的操作符,以下是不属于集合操作符的常见操作符: #### 算术操作符 - `+`:用于加法运算,例如 `SELECT 1 + 2 FROM DUAL;` - `-`:用于减法运算,例如 `SELECT 5 - 3 FROM DUAL;` - `*`:用于乘法运算,例如 `SELECT 4 * 6 FROM DUAL;` - `/`:用于除法运算,例如 `SELECT 8 / 2 FROM DUAL;` #### 比较操作符 - `=`:用于判断相等,例如 `SELECT * FROM employees WHERE department_id = 10;` - `>`:用于判断大于,例如 `SELECT * FROM employees WHERE salary > 5000;` - `<`:用于判断小于,例如 `SELECT * FROM employees WHERE hire_date < TO_DATE('01-JAN-2020', 'DD-MON-YYYY');` - `>=`:用于判断大于等于,例如 `SELECT * FROM employees WHERE commission_pct >= 0.1;` - `<=`:用于判断小于等于,例如 `SELECT * FROM employees WHERE job_id <= 'IT_PROG';` - `<>` 或 `!=`:用于判断不等于,例如 `SELECT * FROM employees WHERE manager_id <> 100;` #### 逻辑操作符 - `AND`:用于逻辑与运算,例如 `SELECT * FROM employees WHERE department_id = 20 AND salary > 3000;` - `OR`:用于逻辑或运算,例如 `SELECT * FROM employees WHERE department_id = 20 OR department_id = 30;` - `NOT`:用于逻辑非运算,例如 `SELECT * FROM employees WHERE NOT (department_id = 20 AND salary > 3000);` #### 其他操作符 - `LIKE`:用于模糊匹配,例如 `SELECT * FROM employees WHERE last_name LIKE 'S%';` - `BETWEEN`:用于判断范围,例如 `SELECT * FROM employees WHERE salary BETWEEN 2000 AND 5000;` - `IN`:用于判断是否在一组值中,例如 `SELECT * FROM employees WHERE department_id IN (10, 20, 30);` ```sql -- 算术操作符示例 SELECT 1 + 2, 5 - 3, 4 * 6, 8 / 2 FROM DUAL; -- 比较操作符示例 SELECT * FROM employees WHERE department_id = 10; SELECT * FROM employees WHERE salary > 5000; -- 逻辑操作符示例 SELECT * FROM employees WHERE department_id = 20 AND salary > 3000; SELECT * FROM employees WHERE department_id = 20 OR department_id = 30; SELECT * FROM employees WHERE NOT (department_id = 20 AND salary > 3000); -- 其他操作符示例 SELECT * FROM employees WHERE last_name LIKE 'S%'; SELECT * FROM employees WHERE salary BETWEEN 2000 AND 5000; SELECT * FROM employees WHERE department_id IN (10, 20, 30); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值