1.學習sql基礎(chǔ)??https://www.w3cschool.cn/sql/
2.增刪改查基礎(chǔ)練習?https://zh.sqlzoo.net/wiki/Nested_SELECT_Quiz
https://www.w3cschool.cn/sql/學習sql基礎(chǔ)
https://zh.sqlzoo.net/wiki/Nested_SELECT_Quiz另一個簡單的練習網(wǎng)站
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等聚合函數(shù)運算時會自動忽略null值呼胚。
5.SUM and COUNT
Quiz 5:
第4題注意,where后面不能用聚合函數(shù)川梅,可以理解為語句執(zhí)行時先執(zhí)行where旺坠,這時表內(nèi)根本沒有聚合函數(shù)這一列洒沦,所以不能這么做,可以使用子查詢等方法
6.The JOIN operation
Quiz 6:
第6題 not against?應該理解為不對陣意大利隊价淌,所以如果意大利隊自己進了球申眼,那就不算這條記錄,所以答案可以分為4種情況:
如果得分球隊不是ITA, 當?shù)梅值那蜿?其中一個隊時蝉衣,另一個肯定不能是ITA(設置條件)
如果得分球隊是ITA括尸,....同上.....,另一個肯定不能是ITA(因為有team1和2,?所以設置條件寫兩條就行了病毡,這兩點寫成一條沒有問題濒翻,但是分析內(nèi)部細節(jié)時,可以分為4種情況)
綜上啦膜,如果選擇了類似于最后一個選項的答案有送,那么就會理解為不存在意大利球隊參賽的情況,少考慮了意大利隊參賽但自己進球的情況僧家,所以選擇C項
7.More JOIN operations
Quiz 7 :
第6題對題意有點誤解雀摘,總之就是要不把director和actor.id相連,要不就是通過中間接casting連接
8.Using Null
Using Null Quiz 8:
其中第4題是display-展示八拱,并未改變數(shù)據(jù)值阵赠,所以不能選set
9.Self join
留意第10題是將route join了4遍涯塔,其中首尾代表始發(fā)地和出發(fā)地,用company和num連接清蚀,中間兩個為連接站點匕荸,用stop相等來連接,主要邏輯就是始發(fā)地-連接站點-終點枷邪,為了實現(xiàn)能夠找到這個站點榛搔,所以要連接4遍,其中中間的兩個route表只要保證stop相同就是可以成為連接站點的條件东揣,然后再篩選出題意要求的始發(fā)點和終點就可以了践惑。
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: