SQL学习-1

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:


你可能感兴趣的:(SQL学习-1)