欢迎光临
我们一直在努力

Oracle语句第23期:Oracle 基础查询类关键词补充详解

一、核心分类及示例

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)是日常使用中最易出错的高频关键词,需重点掌握。

  • 赞(0)
    未经允许不得转载:171主机测评 » Oracle语句第23期:Oracle 基础查询类关键词补充详解
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址