SQL ZOO是什么?
SQL ZOO是一个在线的SQL练习的网站,这里提供比较丰富的练习题目。和Leetcode相比,SQL ZOO练习材料更加丰富更加系统,而且免费。Leetcode上面免费的SQL练习题大概是20道左右;SQL ZOO上则有9个模块的练习题,每个模块有10-20个练习题。不足之处是讨论区不那么好用,且没有参考答案。
basics
例题部分
三道题例题分别考察 where, in, between的用法。
quiz
增加了like, 通配符%, 函数length的考察
world quiz
例题部分
- 8题 考察了逻辑运算符号xor的用法,直接和and,or一样在where 字段中使用就好了。
- 9题 考察了round函数 该函数控制小数位。需要注意在SQL里面 3/5 = 0
- 12题 考察了left函数。
nobel quiz
例题部分
- 12题目 考察单引号在字符串中的表示法。用转义字符
\
,比如'EUGENE O\'NEILL'
- 例题增加了对order by的考察
select in selects quiz
- 子查询直接出一个结果
- 子查询中的条件依赖于父查询中的变量
- 如果需要用到子查询,思考是不是可以用分组聚合函数解决问题
例题部分
- 例题5 考察round(v1,v2) 第二个变量为0,则表示保留到整数位。
- 子查询结果应用到父查询中 例题5中的一个例子
SELECT name
FROM world
WHERE population >= ALL(SELECT population
FROM world
WHERE population>0)
注意All的用法,第二个select语句直接出了字段结果。理论上只需要运行一次。
- 例题9中 查找
select a.name, a.continent,a.population
from world a
where 25000000 >= all(select population from world b where a.continent = b.continent)
这里子表查询中字表查询是嵌套的,父查询有多少条记录,那么字表就需要运行多少次。
- 例题10 第一次做时条件没有写对。
sum and count quiz
- group by 同时存在字段和聚合函数的时候,一定记得加上。
- having 条件写在group by 之后
- group by 有组合的去除重复项目的功能