sql笔记
1.select写列名比*性能更好。
2.group by也能用来去重。
3.--LIMIT (m),n:从第m+1条开始,取n条数据; --LIMIT n OFFSET m:从第m+1条开始,取n条数据;
4.闭区间:age>=20 and age<=23;或者between 20 and 23;
5.不等于的基础语法
#where university != '复旦大学'
#where university not like '复旦大学'
# where university not in ('复旦大学')
6.空值处理:在实际工作中,空字符串也会导致空值,where age is not null and age <> ""
7.是或不是的时候才能用“is”,别的时候有关联关系还是用等号和大于小于才行
8.筛选条件为某个范围,where in ()
9.匹配串中可包含如下四种通配符:
_:匹配任意一个字符;
%:匹配0个或多个字符;
[ ]:匹配[ ]中的任意一个字符(若要比较的字符是连续的,则可以用连字符“-”表 达 );
[^ ]:不匹配[ ]中的任意一个字符。
10.# 方法2
select gpa
from user_profile
where university='复旦大学'
order by gpa desc limit 1
11.round(avg(gpa), 1),结果保留1位小数;
12.在 SQL 中,HAVING
子句不能直接使用别名,而是需要使用原始的聚合函数(如 AVG(question_cnt)
)。
- WHERE 子句是在聚合之前执行的,而 avg_question_cnt 和 avg_answer_cnt 是聚合后的结果。
- 如果需要对聚合后的结果进行筛选,应该使用 HAVING 子句,而不是 WHERE。
13.NULLIF(COUNT(DISTINCT q.device_id), 0)
:如果 COUNT(DISTINCT q.device_id)
为零,NULLIF
会返回 NULL
,从而避免除以零的错误。
14.结果不去重就用union all,去重就用 union。
where university='山东大学' or gender="male"的话,也是去重的。
(持续更新中-- 周为单位整理下框架= =)