SQL快查
# sql快查
# 语句顺序
SELECT DISTINCT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...LIMIT...
1
where后面不能加聚合函数!!
having必须和group by联合使用
order by 放在最后,且多利用索引进行排序
limit 确定查询行数可以提高查询效率
# 执行顺序
注意是执行,执行顺序!!!不是sql的语句编写顺序
sql语句实际执行顺序
FROM > WHERE > GROUP BY > HAVING > SELECT的字段 > DISTINCT > ORDER BY > LIMIT
1
# like用法
不能以%开头,否则索引失效,导致全表扫描
如果使用like '东%',同时对字段进行索引,才不会进行全表扫描
通配符 | 作用 | 例句 |
---|---|---|
_ | 匹配一个字符 | |
% | 匹配多个字符 | |
[] | 匹配括号内任意一个字符 | [陈杨] 含有陈杨姓氏 |
^ | 不匹配括号内字符 | ^[陈杨] 不含有陈杨姓氏 |
# 最值
max() min()
# 特殊
聚合函数作为筛选条件 不能用where,用having
# 子查询
- 关联子查询
- 非关联子查询
# 关键字
如何通过问题的关键字去确定sql语句
关键字 | 具体例子 | 对应sql |
---|---|---|
有多少/xx数 | 用户数 | count() |
平均 | - | avg() |
保留一位小数 | - | round(表达式,1) |
每个/各个/不同xx | 不同大学 | group by |
升序/降序 | - | asc/desc |
每个/各个/不同xxx中大于/小于xxx的平均yyy | 查询每个球队大于球队平均身高/ 每个商品种类中高于商品种类平均价格的 | 关联子查询 |
两组两个条件的逻辑运算 | gpa在3.5以上(不包括3.5)的山东大学用户 或 gpa在3.8以上(不包括3.8)的复旦大学 | - |
编辑 (opens new window)