Oracle SQL关键字速查

作者:Keysqiu
创建时间:2026-03-17 16:22:52 最后一次修改时间:2026-03-31 09:51:21
Categories: Tags:

🧠 总结

关键字 用途
GROUP BY 分组聚合
HAVING 过滤分组结果
ORDER BY 排序结果
UNION 合并结果集(去重)
INTERSECT 交集
EXCEPT 差集
FOR 游标操作(PL/SQL)
COLLATE 字符串排序规则

GROUP

-- 按指定列分组,通常与聚合函数一起使用。
-- 按部门分组,统计每个部门的人数
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;

HAVING

GROUP BY​ 后的结果进行过滤(不能用 WHERE 过滤聚合结果)。

-- 只显示员工人数超过 10 的部门
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;

ORDER BY

对查询结果排序,默认升序(ASC​),可指定降序(DESC)。

-- 按薪资从高到低排序
SELECT name, salary
FROM employees
ORDER BY salary DESC;

UNION

使用 UNION ALL 可保留重复行。

合并两个查询结果,并自动去重(列数和类型需一致)。

-- 合并员工和外包人员姓名,去除重复
SELECT name FROM employees
UNION
SELECT name FROM contractors;

INTERSECT

返回两个查询结果中都存在的行(交集)。

-- 找出 2025 和 2026 年都卖过的商品
SELECT product_id FROM orders_2025
INTERSECT
SELECT product_id FROM orders_2026;

EXCEPT

返回第一个查询有、但第二个查询没有的行(差集)。

-- 找出非 VIP 的普通客户
SELECT customer_id FROM all_customers
EXCEPT
SELECT customer_id FROM vip_customers;

FOR

用于将查询结果格式化为 JSON 或 XML(SQL Server 特有功能)。

-- 将产品列表输出为 JSON 格式
SELECT id, name
FROM products
FOR JSON AUTO;

常见用法:FOR JSON PATH​, FOR JSON AUTO​, FOR XML PATH

COLLATE

指定字符串比较时的排序规则(如区分大小写、语言等)。

-- 区分大小写匹配:'Admin' ≠ 'admin'
SELECT name
FROM users
WHERE name COLLATE SQL_Latin1_General_CP1_CS_AS = 'Admin';

常见规则:

  • _CI_​ = Case Insensitive(不区分大小写)
  • _CS_​ = Case Sensitive(区分大小写)