這張思維導圖幫你快速自查 SQL 簡單查詢

這張思維導圖幫你快速自查 SQL 簡單查詢

來自專欄數據分析師是如何養成的63 人贊了文章

如果想快速了解自己對於 SQL 知識點的掌握是否全面、以及是否有遺漏,那麼可以參考我做的這個思維導圖,快速自查,看到相關的主題如果回憶不起來對應的細節,那麼馬上去查看對應的知識點。思維導圖是一個幫助總結、複習的好學習方法! I LOVE IT!

SQL 基本查詢知識點一覽

推薦一個檢驗你 SQL 水平的好地方

如果學了很久的 SQL,但是又不知道自己到底理解到哪個程度,那麼可以去下面這個網站做一下題目,看看自己真實水平到底如何。

此網站的優點:

1、難度由小到大,循序漸進,遇到比較複雜的查詢還會給提示。

2、做題結果錯誤時,會給出具體的提示,同時還可以查看正確答案,進行比對,糾錯十分方便。做對了的時候,看到 smile face,簡直很開心。

3、網站側邊欄進度條給人以闖關的遊戲即視感,把任務拆分成一階階,十分有利於堅持到底。

SQLZOO?

sqlzoo.net

我把全部題目做了一到兩遍, SQLZOO 裡面稍微複雜點的題目的答案我放到了 Github,有需求的可以自取。

gabywang5/SQLZOO_answer?

github.com圖標

說幾個題目

SQL 語句的書寫順序

1、SELECT 
ightarrow 2、FROM 
ightarrow 3、WHERE 
ightarrow 4、GROUP BY 
ightarrow 5、HAVING 
ightarrow 6、ORDER BY

SQL 語句的執行順序

1、FROM 
ightarrow 2、ON 
ightarrow 3、JOIN 
ightarrow 4、WHERE 
ightarrow 5、GROUP BY 
ightarrow 6、HAVING 
ightarrow 7、HAVING 
ightarrow 8、SELECT 
ightarrow 9、DISTINCT
ightarrow 10、ORDER BY

選擇條件寫在 WHERE 還是 GROUP BY?

SQLZOO 裡面 SUM and COUNT 中的第 7 題 跟 第 8 題。兩者問題表述的不同在於,前者的篩選條件針對單個的 country,後者的篩選條件要求 continent 的 所有country 合起來人口超過 100 million。聚合函數不能寫在 WHERE 語句,這跟 SQL 裡面語句的執行順序有關。

比如下面的這個語句就有錯誤,因為 SUM 是聚合函數,不能寫在 WHERE 語句中。

其實這個錯誤就在這裡有提到,所以大家只要對著思維導圖去回憶、強化,這種錯誤就不會犯。

各種 JOIN 有什麼區別?

The JOIN operation 裡面的13題:

Answer:

篩選出的結果(截圖未截全):

這題主要強調的是對 JOIN 和 LEFT JOIN 區別的注意,插播一句,之前面試阿里的時候,面試官就問到了「JOIN 跟 LEFT JOIN 有什麼區別,這裡統一解釋一下我的理解,如果有錯誤之處,還請指出。

SQL JOIN 語句的種類以及區別

同樣的篩選條件,放在 ON 還是 放在 WHERE 子句中效率更高?

首先,SQL 語句的執行順序如下:

1、FROM 
ightarrow 2、ON 
ightarrow 3、JOIN 
ightarrow 4、WHERE 
ightarrow 5、GROUP BY 
ightarrow 6、HAVING 
ightarrow 7、HAVING 
ightarrow 8、SELECT 
ightarrow 9、DISTINCT
ightarrow 10、ORDER BY

如果只是 JOIN (INNER JOIN),那麼第3步,JOIN 不會進行任何附加操作,也就是 ON 之後就是 WHERE,所以此時篩選條件放在 ON 或者 WHERE,結果都是一樣的。

如果是 OUTER JOIN(LEFT JOIN/RIGHT JOIN),那麼在第3步,JOIN 操作會補齊主表的數據行,非主表所在行如果不存在數據,那麼用 NULL 補齊,然後才會進行 WHERE 條件的篩選,所以條件放在 ON 跟 WHERE,結果會不一樣。

所以,如果是OUTER JOIN,那麼篩選條件放在 ON,SQL 的執行效率會更高,因為這樣在前面就減少了 WHERE 所要進行的操作。

下面這兩個栗子我覺得說的很清楚,可以參考一下。

sql連接查詢中on篩選與where篩選的區別 - ngulc - 博客園?

www.cnblogs.com圖標sql之left join、right join、inner join的區別?

www.cnblogs.com

特殊字元的處理

Q:

A:

要使用的字元串裡面有單引號時,可以多寫一個單引號進行轉義。

Q:

A:

這題把 CASE 語句拿來做排序依據,可以實現,Physics,和 Chemistry 的得獎排在後面。這個在第六章里的思維導圖裡也有提到:

關於 SQL,我有兩點想談:

第一,編寫 SQL 語句時,除了了解這些基本語法、原則,最重要的就是邏輯思維。個人認為,SQL 非常考驗人的邏輯,而邏輯跟一個人在平時的生活、做事方式、思維方式是離不開的,這是需要鍛煉的。

第二,一番題目做下來,最深刻的感受大概就是,RDBMS 之所以是 R 開頭,就是因為不同的數據集之間是有關係的,不是孤立的,而我們在工作生活中需要的信息往往不能只從一個表中獲得,寫到後面,簡單查詢都比較少,涉及最多的是複雜查詢,即需要用到大量的 JOIN,所以對於 JOIN 的徹底理解和熟練使用非常重要。另外,還有一些小技巧要靠做題、經驗來獲得,實踐多了,寫 SQL 語句自然就有了感覺。


推薦閱讀:

TAG:思維導圖 | SQL | 資料庫 |