零基礎快速自學SQL,2天足矣!

數據分析那些事
數據分析不是個事
11 min readMar 16, 2019

此文是《10周入門資料分析》系列的第7篇

想瞭解學習路線,可以先閱讀「10周計劃」

上一篇分享了資料庫的基礎知識,以及如何安裝資料庫,今天這篇分享資料庫操作和SQL。

SQL全稱是 Structured Query Language,翻譯後就是結構化查詢語言,是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統。

至於 ORACLE、DB2、Sybase、SQLServer、MySQL、MS Access等都是資料庫,雖然語法上有差異,但是基本上都是大同小異。作為一名資料從業者,雖然市面上有很多很智慧很自助的資料工具,甚至有的拖拖拽拽就能實現,但作為一名報表工程師、資料分析師,不懂一點SQL是絕對不行的。

之前很多文章對於SQL都一筆帶過,輕描帶寫,略忽視這項基本技能的重要性,所以今天就來講講如何學習SQL。

市面上有大量的書籍和教學視頻,這裡就幫大家提煉核心要點,給個學習方向。

本次的文章主要從以下幾個方面進行說明,大家可以參考著學習:

SQL快速學習路線

零基礎自學SQL時通常會踩到兩個雷:

一雷:學習之前先安裝資料庫軟體,可以是SQL Sever,也可以是MySQL。對於新人而言,安裝資料庫軟體挺費時間,雷太多。我剛上大學那會要求2天內自學SQL,結果我花了1天時間安裝SQL Sever。前一篇文章分享了MySQL的安裝教程,剛開始學用不上太龐雜的功能,所以推薦小而美的MySQL,SQL Sever也是可以的。

二雷:一上來就背SQL語法。我看過太多新人在那邊吭哧吭哧做筆記背SQL,個人不贊成這種學法,不實踐記不住。就和Excel函數一樣,理解含義和如何使用,關鍵時候去w3school查詢一下就行了,以後用得多了自然就掌握了。

SQL學習路線

1、下載安裝MySQL,或者安裝軟體phpstudy(這個軟體自帶了mysql資料庫,而且安裝啟動方便)。

2、我這裡用的是phpstudy,打開phpstudy後,點擊下圖中的啟動,點擊後資料庫服務就會啟動了。

3、下載安裝Navicat軟體

這個軟體可以輕鬆連接資料庫,我們可以在這個軟體中練習學習SQL語法

4、使用Navicat建立資料庫連接

點擊檔 — — 新建連接,連接名隨便填寫,比如我寫的是“本地”。主機名稱、埠都不需要修改,用戶名和密碼都是root(因為我們安裝的phpstudy裡的mysql預設使用者名密碼就是root),點擊連接測試顯示為成功後點確定保存。

以後再次訪問時,按兩下即可。

5、下載習題進行學習,內含習題需要用到的資料表。

6、導入第5步中下載的資料表。

右擊第4步中的“本地”,新建一個資料庫test1,按兩下打開新建的資料庫(打開後顏色是綠色)。

拖拽剛才下載的資料表文件(sqltest1.sql)到test1上面。

這時會出現上述彈窗,點擊開始,等待導入完成後,點擊關閉

在左側空白處右擊,選擇“刷新”,即可看到剛才導入的資料表了。

7、打開sql語法編輯器

如下圖點擊查詢 — — 新建查詢,在空白處輸入sql語法,點擊運行,如果輸入錯誤會有報錯,輸入正確則會返回查詢內容。

8、邊做邊學

打開第一部分習題,邊做邊學,通過查詢w3c的sql語法手冊完成

9、鞏固練習

嘗試不看sql語法手冊,獨立完成第二部分習題。

以上是sql的學習路徑,接下來是sql語句的學習,掌握使用場景和含義,具體語法就不做解釋了,大家參考w3c的sql語法手冊學習。這裡我歸了下類,挑重點講。

資料庫表基礎操作

首先資料庫表必掌握的基礎操作,建表、刪表、往表裡增資料、往表裡刪資料以及最重要的取數等等。

1、CREATE TABLE(建表)

怎麼著也得先建立表~

當你建表成功後,發現忘記添加主鍵,或者忘記添加外鍵,莫著急。使用以下咒語即可:

建好的表如下:

emp表
orders表

2、INSERT(插入)

向表中插入資料

插入資料後的emp表
插入資料後的orders表

3、UPDATE(更新)

4、DELETE(刪除)

在使用delete刪除emp表中資料時,要注意該表與其他表是否存在關聯關係,比如:外鍵。emp表id是表orders的外鍵,如果要刪除emp表中的id,得先刪除orders表中的外鍵。

5、DISTINCT(去重)

在表中,可能會包含重複值,這並不成問題。不過,有時你也許希望僅僅返回唯一不同的值。使用distinct關鍵字進行處理,用於返回唯一不同的值。

注意:distinct關鍵字是去重!去重!去重!*把列中的重複值去掉!
曾經我在筆試的時候,有道SQL考題:請寫出表中所有重複的name的所有資料。我當時沒反應過來,直接就用了distinct關鍵字,後來就….

6、Select(取數)

SELECT 語句用於從表中選取資料,結果被存儲在一個結果表中(稱為結果集)。這是以後最常用的操作,佔據你90%。

SQL SELECT 語法

SELECT 列名稱 FROM 表名稱

以及:

SELECT * FROM 表名稱

比如需獲取名為 “LastName” 和 “FirstName” 的列的內容(從名為 “Persons” 的資料庫表),請使用類似這樣的 SELECT 語句:

SELECT LastName,FirstName FROM Persons

SELECT通常結合其他函數和語法使用。

SQL基礎語句

在實際的SQL使用中,肯定會涉及到有關函數的使用,這裡簡單介紹幾種初學時必學的函數類型。

1、AVG()

AVG 函數返回數值列的平均值。NULL 值不包括在計算中。

2、COUNT()

COUNT( ) 函數用於返回匹配指定條件的行數。

3、MAX()

MAX函數返回指定列的最大值,NULL值不包括在計算中

4、MIN()

MIN函數返回的指定列的最小值,NULL值不包括在計算中

5、SUM()

SUM函數返回指定列的總數

6、ROUND()

ROUND 函數用於把數值欄位舍入為指定的小數位數

round函數需要的參數

7、FORMAT()

FORMAT 函數用於對欄位的顯示進行格式化

format函數需要的參數

SQL高級語句

這一部分的內容是通常用到的,屬於最開始學習SQL知識時必須要熟練的,我這裡大致列出幾項。

1、LIMIT

2、LIKE

一般配合where使用,搜索條件中的指定模式

在上面我們可以看到,萬用字元“%”的使用方法,所以萬用字元必須要配合like 運算子一塊使用。

萬用字元還有以下幾種:

3、IN

從字面意思就可以知道它的作用是什麼了

4、JOIN

聯表運算子JOIN,該運算子是用於將兩個或者兩個以上的表進行關聯,並從這些表中查詢資料。

對於聯表來說,通過使用主鍵(primary key)和外鍵(foreign key)也可以建立連接。

除了上述直接使用條件關聯,下面我們可以用可讀性更高的INNER JOIN來寫

還有其他幾種方連接方式(外連接):

  • LEFT JOIN:就算右表中沒有匹配,也從左表返回所有的行
  • RIGHT JOIN:即使左表沒有匹配,也行右表返回所有的行
  • FULL JOIN:只要有一個表存在著匹配,就返回行

5、ALTER

穿插介紹一下alter,前面的例子中已經包含了幾種alter使用方法。

6、UNION

UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。

請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料類型。同時,每條 SELECT 語句中的列的順序必須相同。

上面引用的意思就是:道不同,不相為謀!

UNION和UNION ALL命令幾乎是等效的,不過加了“ALL”,就會列出所有的值。

注意:因為其也具有“唯一性”,容易和PRIMARY KEY混淆。面試或筆試常考兩者的不同,在這裡說明一下:

與PRIMARY KEY不同的是,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。

為表添加UNION,這裡給出使用的SQL語法。

7、AUTO-INCREMENT(自增)

在運用中,我們希望在每添加一條資料後,自動的為我們的主鍵創建值。

8、ORDER BY

在前面中已經使用到了有關order by的SQL語句,order by該語句用於對結果集進行排序,默認是進行ASC正序排序(從小到大)。

排序的兩種方式:

  • ASC:昇冪(從小到大)
  • DESC:降冪(從大到小)

舉例子:

ASC排序

對於DESC排序,這裡就不進行舉例了,大家可以自己寫SQL試一下。

9、GROUP BY

通常配合合計函數使用,根據一個或多個列對結果集進行分組。

具體的用法在介紹函數時會涉及到。

10、HAVING

在上面的例子中,我們使用where關鍵字來增加查詢準則,這裡增加having字句是因為,where關鍵字無法與合計函數一起使用

同樣引用上面的SQL語句。

具體的用法在介紹函數時會涉及到。

11、DEFAULT

DEFAULT約束用於向列中插入預設值。

本次文章中寫的相關知識點是我以前在學習中隨手記錄的,對一些SQL大大來說,這些已經是耳熟能詳了。會不會讓你們產生一種灌水的錯覺????哈哈~

我是「數據分析那些事」。常年分享資料分析乾貨,不定期分享好用的職場技能工具。

各位粉絲寶寶也可以關注我的Facebook,期待你與我互動起來~

往期內容:

學習計劃|帶你10周入門資料分析

4招教你煉就資料分析的思維

數據分析慣用的5種思維方法

資料分析必備的43个Excel函式,史上最全!

實操:如何用Excel做一次完整的資料分析

寫給新人的資料庫入門指南

--

--

數據分析那些事
數據分析不是個事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/