SELECT
SELECT 用来从表中取出指定列。真实项目里建议明确列名,避免 SELECT * 带来不必要的数据传输和字段依赖。
1 | SELECT id, name, created_at |
DISTINCT
相同值只会出现一次。它作用于所有列,也就是说所有列的值都相同才算相同。
1 | SELECT DISTINCT col1, col2 |
LIMIT
限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。
返回前 5 行:
1 | SELECT * |
另一种等价写法:
1 | SELECT * |
返回第 3 到第 5 行:
1 | SELECT * |
排序
使用 ORDER BY 对查询结果排序。ASC 表示升序,DESC 表示降序。
1 | SELECT id, name, score |
过滤
WHERE 用来筛选行。多个条件可以通过 AND、OR 组合。
1 | SELECT id, name, status |
分组
GROUP BY 常和聚合函数一起使用,例如 COUNT、SUM、AVG、MAX、MIN。
1 | SELECT status, COUNT(*) AS total |
过滤分组结果
HAVING 用来过滤分组后的结果,WHERE 用来过滤分组前的原始行。
1 | SELECT status, COUNT(*) AS total |
记忆方式:
WHERE先过滤行,GROUP BY再分组,HAVING最后过滤分组。