SQL 是使用最為廣泛的數據庫語言。不管你是應用開發者、數據庫管理員、Web 應用設計師、移動應用開發人員,還是只使用流行的報表工具的普遍用戶,掌握良好的 SQL 知識對用好數據庫都是很重要的。
本 SQL 零基礎入門教程將講授讀者需要了解的 SQL 知識,從簡單的數據檢索入手,逐步過渡到一些較為復雜的內容,如聯結、子查詢、存儲過程、游標、觸發器以及表約束等。讀者將從本教程中循序漸進、系統而直接地學到 SQL 的知識和技巧。
一、了解 SQL
這一部分介紹了什么是 SQL,它為什么很有用。因為 SQL 是用來與數據庫打交道的,所以,我們也復習了一些基本的數據庫術語。
二、檢索數據
這一部分的 SQL 教程學習了如何使用 SQL 的 SELECT
語句來檢索單個表列、多個表列以及所有表列。你也學習了如何返回不同的值,如何注釋代碼。同時不好的消息是,復雜的 SQL 語句往往不夠通用。下一部分將講授如何對檢索出來的數據進行排序。
三、排序檢索數據
這一部分的 SQL 教程學習了如何用 SELECT
語句的 ORDER BY
子句對檢索出的數據進行排序。這個子句必須是 SELECT
語句中的最后一條子句。根據需要,可以利用它在一個或多個列上對數據進行排序。
四、過濾數據
這一部分的 SQL 零基礎入門教程介紹了如何用 SELECT
語句的 WHERE
子句過濾返回的數據。我們學習了如何檢驗相等、不相等、大於、小於、值的范圍以及 NULL
值等。
五、高級數據過濾
這一部分講授如何用 AND
和 OR
操作符組合成 WHERE
子句,還講授了如何明確地管理求值順序,如何使用 IN
和 NOT
操作符。
六、用通配符進行過濾
這一部分的 SQL 零基礎入門教程介紹了什么是通配符,如何在 WHERE
子句中使用 SQL 通配符,還說明了通配符應該細心使用,不要使用過度。
七、創建計算字段
這一部分介紹了計算字段以及如何創建計算字段。我們用例子說明了計算字段在字符串拼接和算術計算中的用途。此外,還講述了如何創建和使用別名,以便應用程序能引用計算字段。
八、使用函數處理數據
這一部分的 SQL 教程介紹了如何使用 SQL 的數據處理函數。雖然這些函數在格式化、處理和過濾數據中非常有用,但它們在各種 SQL 實現中很不一致。
九、匯總數據
聚集函數用來匯總數據。SQL 支持 5 個聚集函數,可以用多種方法使用它們,返回所需的結果。這些函數很高效,它們返回結果一般比你在自己的客戶端應用程序中計算要快得多。
十、分組數據
上一部分介紹了如何用 SQL 聚集函數對數據進行匯總計算。這一部分的 SQL 教程講授了如何使用 GROUP BY
子句對多組數據進行匯總計算,返回每個組的結果。我們看到了如何使用 HAVING
子句過濾特定的組,還知道了 ORDER BY
和 GROUP BY
之間以及 WHERE
和 HAVING
之間的差異。
十一、使用子查詢
這一部分的 SQL 教程學習了什么是子查詢,如何使用它們。子查詢常用於 WHERE
子句的 IN
操作符中,以及用來填充計算列。我們舉了這兩種操作類型的例子。
十二、聯結表
聯結是 SQL 中一個最重要、最強大的特性,有效地使用聯結需要對關系數據庫設計有基本的了解。這一部分的 SQL 零基礎入門教程在介紹聯結時,講述了一些關系數據庫設計的基本知識,包括等值聯結(也稱為內聯結)這種最常用的聯結。下一部分將介紹如何創建其他類型的聯結。
十三、創建高級聯結
這一部分是上一部分的延續,首先講授了如何以及為什么使用別名,然后討論不同的聯結類型以及每類聯結所使用的語法。我們還介紹了如何與聯結一起使用聚集函數,以及在使用聯結時應該注意的問題。
十四、組合查詢
這一部分的 SQL 教程講授如何用 UNION
操作符來組合 SELECT
語句。利用 UNION
,可以把多條查詢的結果作為一條組合查詢返回,不管結果中有無重復。使用 UNION
可極大地簡化復雜的 WHERE
子句,簡化從多個表中檢索數據的工作。
十五、插入數據
這一部分的 SQL 教程介紹如何將行插入到數據庫表中。我們學習了使用 INSERT
的幾種方法,為什么要明確使用列名,如何用 INSERT SELECT
從其他表中導入行,如何用 SELECT INTO
將行導出到一個新表。下一部分將講述如何使用 UPDATE
和 DELETE
進一步操作表數據。
十六、更新和刪除數據
這一部分的 SQL 教程講述了如何使用 UPDATE
和 DELETE
語句處理表中的數據。我們學習了這些語句的語法,知道了它們可能存在的危險,了解了為什么 WHERE
子句對 UPDATE
和 DELETE
語句很重要,還學習了為保證數據安全而應該遵循的一些指導原則。
十七、創建和操縱表
這一部分的 SQL 教程介紹了幾條新的 SQL 語句。CREATE TABLE
用來創建新表,ALTER TABLE
用來更改表列(或其他諸如約束或索引等對象),而 DROP TABLE
用來完整地刪除一個表。這些語句必須小心使用,並且應該在備份后使用。由於這些語句的語法在不同的 DBMS 中有所不同,所以更詳細的信息請參閱相應的 DBMS 文檔。
十八、使用視圖
視圖為虛擬的表。它們包含的不是數據而是根據需要檢索數據的查詢。視圖提供了一種封裝 SELECT
語句的層次,可用來簡化數據處理,重新格式化或保護基礎數據。
十九、使用存儲過程
這一部分的 SQL 教程介紹了什么是存儲過程,為什么使用存儲過程。我們介紹了執行和創建存儲過程的語法,使用存儲過程的一些方法。存儲過程是個相當重要的主題,一個部分的內容無法全部涉及。各種 DBMS 對存儲過程的實現不一,你使用的 DBMS 可能提供了一些這里提到的功能,也有其他未提及的功能,更詳細的介紹請參閱具體的 DBMS 文檔。
二十、管理事務處理
這一部分的 SQL 教程介紹了事務是必須完整執行的 SQL 語句塊。我們學習了如何使用 COMMIT
和 ROLLBACK
語句對何時寫數據、何時撤銷進行明確的管理;還學習了如何使用保留點,更好地控制回退操作。事務處理是個相當重要的主題,一個部分的內容無法全部涉及。各種 DBMS 對事務處理的實現不同,詳細內容請參考具體的 DBMS 文檔。
二十一、使用游標
我們在這個部分講授了什么是游標,為什么使用游標。你使用的 DBMS 可能會提供某種形式的游標,以及這里沒有提及的功能。更詳細的內容請參閱具體的 DBMS 文檔。
二十二、高級 SQL 特性
本部分的 SQL 零基礎入門教程講授如何使用 SQL 的一些高級特性。約束是實施引用完整性的重要部分,索引可改善數據檢索的性能,觸發器可以用來執行運行前后的處理,安全選項可用來管理數據訪問。不同的 DBMS 可能會以不同的形式提供這些特性,更詳細的信息請參閱具體的 DBMS 文檔。
(完)