💡
原文英文,约700词,阅读约需3分钟。
📝
内容提要
本文介绍了SQL的高级主题,包括GROUP BY用于分组,HAVING用于过滤聚合结果,子查询的嵌套使用,LIMIT和OFFSET用于结果分页,IN和NOT IN用于基于值列表的过滤,以及JOIN的使用条件。若无共同列,可使用CROSS JOIN或UNION。
🎯
关键要点
- GROUP BY用于根据指定列的相同值对行进行分组,通常与聚合函数一起使用。
- HAVING用于过滤聚合结果,而WHERE用于在分组之前过滤行。
- 子查询是嵌套在另一个查询中的SQL查询,分为标量子查询、多行子查询和相关子查询。
- LIMIT用于限制返回的行数,OFFSET用于跳过一定数量的行,常用于结果分页。
- IN和NOT IN运算符用于基于值列表过滤结果,IN选择特定部门的员工,NOT IN排除特定部门的员工。
- PostgreSQL的命名规则要求表名以字母或下划线开头,不能使用保留关键字。
- 可以在表之间进行JOIN操作,前提是它们有共同的列(主键和外键)。
- 如果两个表没有共同列,可以使用CROSS JOIN生成笛卡尔积,或使用UNION合并结果。
❓
延伸问答
GROUP BY 和 HAVING 有什么区别?
GROUP BY 用于根据指定列的相同值对行进行分组,而 HAVING 用于过滤聚合结果。
什么是子查询,它有哪些类型?
子查询是嵌套在另一个查询中的 SQL 查询,主要有标量子查询、多行子查询和相关子查询。
如何使用 LIMIT 和 OFFSET 进行结果分页?
LIMIT 用于限制返回的行数,OFFSET 用于跳过一定数量的行,常用于分页显示结果。
IN 和 NOT IN 运算符的使用场景是什么?
IN 用于选择特定值的记录,NOT IN 用于排除特定值的记录,适合基于值列表的过滤。
在 PostgreSQL 中,表名的命名规则是什么?
表名必须以字母或下划线开头,可以包含字母、数字和下划线,不能使用保留关键字。
如何在没有共同列的情况下连接两个表?
可以使用 CROSS JOIN 生成笛卡尔积,或使用 UNION 合并结果。
➡️