SQL入門學習:SQL In Excel講解

SQL是一種結構化查詢語言(Structured Query Language),是一種聲明式語言,敲黑板劃重點【結構化和聲明式】。SQL的核心是對錶的引用,聲明你想從數據源中獲取什麼樣的結果,而不用告訴計算機如何才能夠得到結果——


SQL入門學習:SQL In Excel講解

比如說,我們需要獲取上圖所示表格(Sheet1)成績大於等於80分的人員名單,如果用命令式程序語言,如VBA,是這樣:

Sub MyFind()

Dim arr, brr, i&, k&

arr = Sheet1.[a1].CurrentRegion

ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))

For i = 1 To UBound(arr)

If arr(i, 2) >= 80 Then

k = k + 1

brr(k, 1) = arr(i, 1)

brr(k, 2) = arr(i, 2)

End If

Next

[d:f].ClearContents

[d1].Resize(k, 2) = brr

End Sub

你需要通過VBA編程告訴計算機每一步怎麼走,數據從哪裡來,從哪裡開始遍歷,行列是多少,符合條件的數據裝入哪裡,怎麼裝等等……


而如果用聲明式SQL語言呢?只需告訴計算機我要什麼就可以了。


SELECT 姓名,成績 FROM [Sheet1$] WHERE 成績>=80


我要Sheet1表(FROM [Sheet1$])……成績大於等於80(WHERE 成績>=80)……姓名和成績的數據(SELECT 姓名,成績)。


只要結果,不問過程。

那為什麼要學習SQL In Excel(Excel支持的SQL語言)呢?

相比Excel其它功能,例如函數、VBA、POWER PIVOT等,SQL有哪些優勢?

首先,必須說明的是,對於普通Excel使用者而言,VBA、SQL以及以後提及的ADO並不是非學不可的,非學不可的是基礎操作、函數、透視表、圖表……

而大數據時代,對於另外相當一部分表族而言,Excel用久了,慢慢的,會意識到一個大問題;曾經在你心中無比強大的Excel函數,原來只適合小數據處理;當數據量稍大後,函數這貨就不來勁的很,卡死機。

SQL In Excel則可以解決函數處理大數據效率低下的問題,使用SQL語言,你甚至可以將Excel作為前臺數據管理界面,數據庫(例如ACCESS)作為後臺數據儲存倉庫,進而儲存、分析、管理遠超Excel體積的數據量。

VBA處理數據的核心是數組+字典,倘若SQL和它比較起來有何優劣?

先說優點

通過上面代碼我們很直觀的看到,SQL的書寫要比VBA編程簡潔的多,甚至比小巧靈的函數還要簡潔;此外,SQL高效處理的數據量上限,也是遠遠大於VBA數組+字典的;字典裝上50W的數據,一般電腦的計算效率就開始垂直下降了,而SQL 還是風輕雲淡臉;最後,SQL+ADO+VBA可以通過Excel直接處理數據庫(例如ACCESS)來源的數據……。

劣勢則是:

SQL作為一種數據庫結構化查詢語言,對錶的結構和數據的類型有著嚴格的要求,而嚴格來說Excel並非數據庫,儘管它支持ADO和SQL。

Excel對錶的結構和數據的類型並沒有嚴格的限定,例如合併單元格,多行表頭,空記錄,一列之內存在多種數據類型等等劣跡存在,因此,字典+數組處理EXCEL數據的靈活性要遠遠高於SQL,畢竟數組遍歷在手,天下我有,什麼合併單元格多行表頭,統統都是浮雲……

最後,SQL In Excel 和Power BI For Excel(以下簡稱Power BI)相比優勢在哪裡?

從Excel的角度講,SQL和Power BI最大的優勢是,SQL支持VBA語言。通過ADO執行SQL語言,VBA可以獲取、分析、管理多種來源的數據,甚至進而對獲取的數據再搭配字典、數組以及各種Excel自帶的功能作進一步自動化、智能化處理……換句話說,VBA運行SQL語句後,可以再整合Excel所有的功能進一步處理數據,除了Power BI——

從數據的角度講,Power BI是一款數據分析的軟件,包含了M和DAX查詢語言,SQL則是一種數據管理的語言。查詢和管理有何不同?簡而言之,SQL不但可以查詢數據,還可以操縱數據,例如增、改、刪等等。而M和DAX語言對數據原則上只能查詢,不能操縱。就像我們在Power BI入門教程中講的,它只能改變自己,無法改變對方(指的是數據源,不是我們的愛情)

另外,SQL是一門廣被接受和支持的語言。Excel,ACCESS,R,Python,JAVA,C,C#等等軟件和語言,均是支持SQL的;而POWER BI顯然沒有這樣的待遇。

作為一名數據分析員有三個必須掌握的技能,SQL獲得數據,EXCEL分析數據,PPT展現數據。POWER BI出現後,有人說學了POEWR BI,就不用學SQL了。如果你能意識到兩者之間的不同,顯然就會明白這是不可能的。

如果你是一名數據分析員,POWER BI最好也是要學的。原因很簡單,它很簡單。

說了這麼多,如何在Excel中使用SQL?

一般有三種方法。

一種是MS Query法,不常用,省略。


一種是OLE DB法,具體過程是,單擊Excel【數據】選項卡下的【現有鏈接】,在彈出的【現有鏈接】對話框中,單擊【瀏覽更多】,選取目標文件後,依次【確定】,得到下面的【導入數據】對話框。

SQL入門學習:SQL In Excel講解

點擊此處添加圖片說明文字

這種方法通常搭配數據透視表(上圖顯示方式選擇【數據透視表(P)】),也可以搭配Power Pivot(高級版本Excel勾選上圖的【將此數據添加到數據模型】)。

單擊【屬性】按鈕後,得到【鏈接屬性】對話框,再單擊【定義(D)】選項卡,即可在【命令文本】編輯框中輸入SQL語句,並【確定】執行。


SQL入門學習:SQL In Excel講解

最後一種是VBA+ADO法,也是我們後文中常使用的方法。

相比於第2種方法,VBA+ADO法的優點……

首先是自動化,它可以使用VBA代碼綁定ADO,設定鏈接字符串,執行SQL語句,進而一鍵獲取分析數據。其次,VBA編程可以使用變量編輯SQL語句,這遠比第2種方法手動輸入SQL語句要靈活智能的多,另外,VBA+ADO法不但可以SELECT(查詢)數據,還可以INSERT(增)DELETE(刪)UPDATE(改)數據庫的數據等。

SQL難嗎?

入門很容易,精通很難。

對於EXCELer,並沒有精通的必要性,搭配ADO以及VBA自身的功能,例如數組和字典,入門SQL已經足夠了。



分享到:


相關文章: