2012年1月18日 星期三

《入門SQL》筆記


這本書可以看做是入門的 SQL 字典,它的每篇範例都有針對 Oracle 與 SQL Server 列出不同的語法,還算不錯的入門書籍。
這邊我就只有做第十章【錯誤的處理對策】的筆記而已,前面的入門語法因為我看過了新SQL學習繪本,所以就跳過不看,其實內容是大同小異的。
這兩本相較之下,新SQL學習繪本因為有配合圖示,會比較好理解;入門SQL 則是針對每個語法做比較詳細的說明。


1.搜尋 NULL 值 是以「IS NULL」來搜尋

2.WHERE 子句中無法使用聚合函數,必須利用子查詢才行,或是改以 GROUP BY 子句與 HAVING 子句的用法

3.子查詢的執行結果都必須要是 1 個值才行

4.若想針對數個值做運算,並同時輸出,則必須使用 GROUP BY 子句,將不同的值進行群組化。如此一來,即使同時設定了一般的欄位與聚合函數,也不會產生錯誤

5.當你使用 GROUP BY 子句進行群組化時,任何一個欄位只要它的值在每個群組中超出 1 個時,就不能於 SELECT 子句中再設定它了
至於設定於 GROUP BY 子句中的欄位,由於各列的群組化原本就是依照這個欄位的值來進行的,所以在群組化後這個欄位的值在每個群組中都只有 1 個而已,因而能夠在 SELECT 子句中設定這個欄位
此外,聚合函數所傳回的值,也是每個群組都只有 1 個而已,所以我們也能在 SELECT 子句中設定它

6.當你替資料表名稱設定別名後,在設定欄位名稱時就不能再使用原本的資料表名稱,無論是在 SELECT 子句或 WHERE 子句

7.若有些欄位會同時存在於好幾個資料表中,則你在設定這個欄位時,就要連同資料表名稱一併寫出,才能辨別要輸出的是哪個資料表的欄位,也能方便閱讀

8.想要讓子查詢傳回多列,可以使用 IN 關鍵字

9.想要讓子查詢傳回多個欄位,則可以使用 EXISTS 關鍵字

10.一旦欄位設定了 NOT NULL 的限制,就一定要儲存著值才行

沒有留言:

張貼留言