1.学习sql基础 https://www.w3cschool.cn/sql/
2.增删改查基础练习 https://zh.sqlzoo.net/wiki/Nested_SELECT_Quiz
https://www.w3cschool.cn/sql/学习sql基础
https://zh.sqlzoo.net/wiki/Nested_SELECT_Quiz另一个简单的练习网站
1.SELECT basics
Quiz 1:
2.SELECT from WORLD Tutorial
Quiz 2:
Quiz 3:
4.SELECT within SELECT Tutorial:
Quiz 4:
第5题注意下为什么不能选最后一个选项,因为null是不能用<>来判断的,用的是not null, 正确选项中,max,min,avg等聚合函数运算时会自动忽略null值。
5.SUM and COUNT
Quiz 5:
第4题注意,where后面不能用聚合函数,可以理解为语句执行时先执行where,这时表内根本没有聚合函数这一列,所以不能这么做,可以使用子查询等方法
6.The JOIN operation
Quiz 6:
第6题 not against 应该理解为不对阵意大利队,所以如果意大利队自己进了球,那就不算这条记录,所以答案可以分为4种情况:
如果得分球队不是ITA, 当得分的球队=其中一个队时,另一个肯定不能是ITA(设置条件)
如果得分球队是ITA,....同上.....,另一个肯定不能是ITA(因为有team1和2, 所以设置条件写两条就行了,这两点写成一条没有问题,但是分析内部细节时,可以分为4种情况)
综上,如果选择了类似于最后一个选项的答案,那么就会理解为不存在意大利球队参赛的情况,少考虑了意大利队参赛但自己进球的情况,所以选择C项
7.More JOIN operations
Quiz 7 :
第6题对题意有点误解,总之就是要不把director和actor.id相连,要不就是通过中间接casting连接
8.Using Null
Using Null Quiz 8:
其中第4题是display-展示,并未改变数据值,所以不能选set
9.Self join
留意第10题是将route join了4遍,其中首尾代表始发地和出发地,用company和num连接,中间两个为连接站点,用stop相等来连接,主要逻辑就是始发地-连接站点-终点,为了实现能够找到这个站点,所以要连接4遍,其中中间的两个route表只要保证stop相同就是可以成为连接站点的条件,然后再筛选出题意要求的始发点和终点就可以了。
order的顺序无所谓,只是为了和答案一样,得到笑脸,才使用了一个特定排序,实际上不排序也可以.
第10题代码,由于对话框太小,写在这里:
SELECT a.num,a.company,stopb.name,d.num,d.company FROM
stops stopa join route a ON (a.stop=stopa.id)
JOIN route b ON
(a.company=b.company AND a.num=b.num)
JOIN route c ON
(b.stop=c.stop)
JOIN route d ON
(c.company=d.company AND c.num=d.num)
JOIN stops stopb ON (b.stop=stopb.id)
JOIN stops stopc ON (c.stop=stopc.id)
JOIN stops stopd ON (d.stop=stopd.id)
WHERE stopa.name='Craiglockhart' and stopd.name='Lochend'
order by case when a.num=10 then 1
when a.num=27 then 2
when a.num=4 then 3
when a.num=45 then 4
else 5 end,stopb.name,d.num
Self join Quiz 9: