📇 本类导航
本页自动汇总「数据库」分类下的全部笔记(含子分类),随笔记增删实时更新。
🧠 总结
关键字 用途 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(区分大小写)
🧠 总结
关键字 用途说明 GROUP BY按列分组,配合聚合函数(如 COUNT,SUM)使用HAVING过滤分组后的结果(作用于聚合值) ORDER BY对查询结果排序(支持 ASC/DESC)UNION合并多个查询结果,自动去重; UNION ALL保留重复行INTERSECT返回两个查询结果的交集(仅共有的行) EXCEPT返回第一个查询有、但第二个查询没有的行(差集) FOR用于格式化输出,如 FOR JSON,FOR XMLCOLLATE指定字符串排序规则,例如大小写敏感或语言特定比较
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(区分大小写)
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Comments
