一、核心分类及示例
1. 列处理与别名类
这类关键词用于对查询结果的列进行重命名、去重、计算等操作,是基础查询的核心组成部分。
| AS | 给列 / 表指定别名(可省略) | SELECT emp_id AS 员工编号, emp_name 员工姓名 FROM emp; |
| DISTINCT | 去除查询结果中的重复行 | SELECT DISTINCT dept_id FROM emp;(查询所有存在的部门编号,去重) |
| DISTINCTROW | 等同于 DISTINCT(Oracle 兼容写法) | SELECT DISTINCTROW salary FROM emp; |
| * | 通配符,代表查询所有列 | SELECT * FROM emp WHERE dept_id=10; |
2. 条件筛选扩展类
除了 AND/OR/BETWEEN/IN,这些关键词用于更灵活的条件过滤,是 WHERE 子句的核心补充。
| NOT | 取反条件(搭配 IN/BETWEEN/NULL 等) | SELECT emp_name FROM emp WHERE dept_id NOT IN (10,20); |
| IS NULL | 判断列值是否为 NULL(不能用 = NULL) | SELECT emp_name FROM emp WHERE bonus IS NULL;(查询无奖金的员工) |
| IS NOT NULL | 判断列值非 NULL | SELECT emp_name FROM emp WHERE bonus IS NOT NULL; |
| LIKE | 模糊查询(搭配 %/_ 通配符) | SELECT emp_name FROM emp WHERE emp_name LIKE '张%';(查询姓张的员工) |
| ESCAPE | 模糊查询中转义特殊字符(如 %/_) | SELECT emp_name FROM emp WHERE emp_name LIKE '李\\_%' ESCAPE '\\';(查询李_开头的员工,_ 为普通字符) |
| ANY | 与比较运算符搭配,匹配集合中任意值 | SELECT emp_name FROM emp WHERE salary > ANY (5000,8000);(工资大于 5000 或 8000) |
| ALL | 与比较运算符搭配,匹配集合中所有值 | SELECT emp_name FROM emp WHERE salary > ALL (5000,8000);(工资大于 8000) |
3. 排序类
用于对查询结果进行排序,是基础查询中调整结果展示顺序的核心关键词。
| ORDER BY | 指定排序的列和规则 | SELECT emp_name, salary FROM emp ORDER BY salary DESC; |
| ASC | 升序排序(ORDER BY 默认值,可省略) | SELECT emp_name FROM emp ORDER BY hire_date ASC; |
| DESC | 降序排序 | SELECT emp_name FROM emp ORDER BY salary DESC, emp_id ASC; |
| NULLS FIRST | 排序时 NULL 值排在最前 | SELECT bonus FROM emp ORDER BY bonus NULLS FIRST; |
| NULLS LAST | 排序时 NULL 值排在最后 | SELECT bonus FROM emp ORDER BY bonus DESC NULLS LAST; |
4. 限制结果集类
用于控制查询结果的行数,Oracle 不同版本有不同写法,均属于基础查询范畴。
| ROWNUM | 伪列,限制返回的行数(Oracle 传统写法) | SELECT * FROM emp WHERE ROWNUM <= 5;(查询前 5 条员工记录) |
| FETCH | 12c+ 版本的行限制关键词(推荐) | SELECT * FROM emp ORDER BY salary DESC FETCH FIRST 5 ROWS ONLY; |
| OFFSET | 12c+ 版本,跳过指定行数后查询 | SELECT * FROM emp ORDER BY salary DESC OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;(查询第 6-10 条) |
5. 子查询关联类
基础查询中嵌套子查询时的核心关键词,用于关联内外层查询。
| EXISTS | 判断子查询是否有结果(存在即返回) | SELECT emp_name FROM emp e WHERE EXISTS (SELECT 1 FROM dept d WHERE d.dept_id=e.dept_id AND d.dept_name='研发部'); |
| NOT EXISTS | 子查询无结果时返回 | SELECT emp_name FROM emp e WHERE NOT EXISTS (SELECT 1 FROM dept d WHERE d.dept_id=e.dept_id); |
| IN | 补充:可搭配子查询 |
SELECT emp_name FROM emp WHERE dept_id IN (SELECT dept_id FROM dept WHERE dept_name LIKE '销售%'); |
二、特殊说明
上述关键词均属于基础查询范畴(区别于聚合、分组、连接等进阶查询),是编写简单到中等复杂度 SELECT 语句的核心;
部分关键词(如 ROWNUM/FETCH)虽为伪列 / 新语法,但因高频用于基础结果集限制,归类为基础查询类;
关键词大小写不敏感(Oracle 特性),但建议统一大写以提升代码可读性。
三、总结
Oracle 基础查询类关键词除了基础的 SELECT/FROM/WHERE,核心补充包括:列处理类(AS/DISTINCT)、条件扩展类(NOT/LIKE/IS NULL)、排序类(ORDER BY/ASC/DESC)、结果限制类(ROWNUM/FETCH)、子查询关联类(EXISTS/IN);
这些关键词覆盖了 “筛选 – 处理 – 排序 – 限制” 基础查询全流程,是编写高效 SELECT 语句的必备知识点;
模糊查询(LIKE)、NULL 值判断(IS NULL)、结果行数限制(ROWNUM/FETCH)是日常使用中最易出错的高频关键词,需重点掌握。



