1.
諸君好~
我們……過去……
第1章講述了SQL In Excel的優(yōu)劣。Excel VBA ADO SQL入門教程001:認識SQL In Excel
第2章講述了如何在VBA中執(zhí)行SQL,也就是簡單認識了下ADO。Excel VBA ADO SQL入門教程002:簡單認識ADO
現在……總算可以開始逐步分享SQL語句和實例了……。
不過在這之前,還是需要對一些名詞做出解釋;這些名詞是SQL語句釋義中經常使用到的,所以請先有一個大概的了解。
1.1數據庫
數據庫是按照數據結構來組織、儲存和管理數據的倉庫,例如最基礎的ACCESS軟件等。通常情況下,我們將一個Excel工作簿視為一個數據庫。是的,如您所知,Excel并不是數據庫,但這并不妨礙我們把它看成一個數據庫,進而使用SQL語言的某些功能處理數據。這就好比盡管男人不是女人,但一樣可以織毛衣、做月嫂……不過,得承認,生孩子之類的就確實太富有挑戰(zhàn)性了。
1.2數據表
數據表,或稱之為表,是數據庫最重要的組成部分之一,一個數據庫由一個或一組數據表組成。如果我們把這句話的“數據庫”,替換成“Excel工作簿”,就變成這樣:表是Excel工作簿最重要的組成部分之一,一個Excel工作簿由一個或一組表組成,你看,同樣也是成立的——因此,可以先將Excel工作表視為數據庫中的“表”,至于異同,以后再聊。
1.3記錄和字段
如上圖所示,和Excel表格一樣,數據庫的表由行和列組成,只是不存在行號和列標,相關值自然就不能使用A6、F4之類的Excel單元格地址來表述。表的每一行描述實體的一個實例,稱之為記錄;每一列描述實體的一個特征或屬性,稱之為字段,列的標題稱之為字段名或列標題,例如上圖中的“姓名”。
主鍵和外鍵……以后用到再說。
沒了。
2.
SQL的數據查詢和操縱語句包括SELECT、UPDATE、INSERT、DELETE等,也就是所謂的查改增刪,其中最重要、使用最頻繁的是SELECT查詢語句。查詢按照復雜性劃分,可以從一個簡單的語句返回所有表中所有的記錄,到用一個語句鏈接多個表并定義多種搜索條件……
現在,就讓我們從最簡單的部分走起吧——走你,少年。
SELECT語法如下(簡化版):
SELECT 字段名 FROM 表名
SELECT關鍵詞指明了要查詢的字段名稱,FROM關鍵詞指明了要獲取字段信息的表的名稱。
倘若數據源是Excel表格,需要在表名后增加美元符號$,并用中括號包起來,例如[Sheet1$]。
另外需要說明的是,SQL語言對關鍵詞大小寫不敏感。SELECT、select、Select都可以使用,作用等同;基于書寫規(guī)范化的原因,可能有些老師會要求關鍵詞統(tǒng)一大寫;嗯,我不是老師,我還?。晃业囊庖娛切率制谠趺聪矚g怎么順眼怎么來——你好就好,寵溺臉。
3.
分享一下SQL In Excel 常用字段查詢語句以及常見問題的解決方法。
如下圖所示,是一份Excel表格,表名為學生表,內容是一些看見星光之類小學生的信息數據。
3.1,單個字段查詢
假設我們需要查詢上圖所示表格的姓名列數據。語句如下:
SELECT 姓名 FROM [學生表$]
結果如下:
3.2,多個字段查詢
假設我們需要查詢字段為姓名/性別/愛好的記錄,語句如下:
SELECT 姓名,性別,愛好 FROM [學生表$]
不同字段名之間使用英文逗號間隔,但最后一個字段名不用。另外需要格外注意的是,英文逗號千萬別寫成中文逗號,當然,初學階段,別說千萬,億萬萬也沒辦法阻止咱們錯輸中文逗號的情況發(fā)生……反復切換輸入法的中英文狀態(tài)真的是很煩的一匹……。
上述語句查詢結果如下:
3.3,查詢所有字段的快捷方式
如果我們需要提取所有字段的數據呢?一種方法是將所有字段名寫入SELECT語句中:
SELECT ID,姓名,性別,年齡,愛好,得分 FROM [學生表$]
另外一種方法是,使用星號(*)選取所有列:
SELECT * FROM [學生表$]
兩者的區(qū)別在于,前者只選取指定字段的數據,后者包括了指定表的所有數據。對于Excel表格而言,如果字段名確定,出于安全考慮,通常使用前者更靠譜點兒。
3.4,別名的使用
如果我們需要更改查詢結果中的字段名稱,例如我不喜歡字段名“愛好”,我想把它改成“特長”,可以使用關鍵詞as,as是英文alias 的縮寫,也就是“別名”的意思。語句如下:
SELECT 姓名,愛好 AS 特長 FROM [學生表$]
3.5,特殊字段名的處理
當字段名存在某些特殊字符,例如空格,或者當字段名存在SQL語言的保留字,例如AS,該字段名需要使用中括號括起來,避免因語法識別混亂,系統(tǒng)產生錯誤信息的提示。
舉個例子,如上圖所示,Excel表名為調查表,該表字段名中有的存在空格(姓 名),有的使用了SQL的保留字as,如果需要查詢該表格姓名和地址的信息,SQL語句如下:
select [姓 名] , [as] from [調查表$]
查詢結果如下:
3.6,無字段名情況的處理
之前講過,Excel并不是數據庫,對數據結構并沒有強制性要求,因為這樣的緣故,在使用SQL處理數據時,難免會碰上各種有趣的現象。例如,數據表純數據沒有標題行,再或者,標題行存在合并單元格等,以至于字段名無法使用,此時,倘若需要獲取字段數據,對字段名通常使用f加序列號表示,引用表的第1列字段名就是f1,第2列字段名是f2,其余依次類推。
如上圖所示,該表格沒有標題欄,如果我們需要查詢姓名和性別,代碼如下:
select f2 as 姓名,f3 as 性別 from [學生表$]
查詢結果如下:
砸桌子:還記得大明湖畔使用VBA ADO執(zhí)行SQL語句時,如果引用表不存在標題欄,需要修改鏈接字符串的哪個參數的項嗎?——出門右拐請重看第2章吧~
4.
今就聊這吧,上一章聊的太多了,以至于好多男女毅然決然的對俺表白告辭,七碗酒都挽留不回的告辭,心和蛋都碎了的凄慘……所以今就簡單點,說話的方式簡單點……~
嗯,篇首增加了章節(jié)說明,是希望新手能夠更好的把握章節(jié)要點和目標;別被文章中細節(jié)繁多的枝椏部分哄住了,上帝作證,我的長相決定了嚇人真不是我的本意,我只是習慣了把一些知識點交待清楚,嗯,星光俺是一個態(tài)度嚴謹氣質活潑組織放心……省略一千字……的五有好少年。