為了與MySQL 服務器進行通信,必須熟練掌握S Q L。例如,在使用諸如mysql 客戶機這樣的程序時,其功能首先是作為一種發送SQL 語句給服務器執行的工具。而且,如果編寫使用編程語言所提供的MySQL 接口的程序時,也必須熟悉SQL 語言,因為需要發送SQL 語
句與服務器溝通。
第1章“M y S Q L與S Q L介紹”的教程介紹了許多MySQL 功能。本章在該教程的基礎上進一步對M y S Q L的S Q L的幾個方面進行研究。它討論了怎樣引用數據庫的要素,包括命名規則以及區分大小寫約束的適用性。它還介紹了許多更為重要的SQL 語句,諸如創建和刪除數據庫、表和索引的語句;利用連接檢索數據的語句;提供關於數據庫和表的信息的語句等。這裡的介紹還強調了MySQL 對標准SQL 進行的某些擴充。
3.1 MySQL 中的SQL特征
MySQL 的SQL 語句可分為幾大類,如圖3-1 所示。我們將在本章中介紹圖3 - 1中所示的前四類。M y S Q L的一些實用工具提供了與某些SQL 語句的基本命令行接口的機制。例如,mysqlshow 就是SHOW COLUMNS 語句的一個接口。本章中適當的地方也對這些等效的東西進行介紹。未在本章介紹的一些語句將在其他章中介紹。例如,用於設置用戶權限的GRANT和REVOKE 語句在第11章“常規的MySQL管理”中介紹。所有語句的引用語法在附錄D“SQL 語法參考”中列出。此外,還可以參看MySQL 參考指南( MySQL Reference Manual)以獲得其他信息,特別是獲得MySQL 最新版本中所作更改的信息。
本章最後一節介紹M y S Q L缺少的功能,即一些其他數據庫中有的而MySQL 中無的功能。例如子選擇、事務處理、引用完整性、觸發器、存儲過程以及視圖。缺少這些功能是否意味著MySQL 不是一個“真正”的數據庫系統?有些人是這樣認為的,但據筆者的看法,這些功能的缺乏並未阻止大量人員使用它。這大概是因為,對於大多數應用來說,缺這些功能沒什麼關系。而其他一些需要這些功能的場合,也有相應的解決辦法。例如,缺少級聯刪除表示從表中刪除記錄時,可能需要發布一條額外的查詢。如果發現利用L O C K TABLES 與UNLOCK TABLES 語句,將各語句分為不中斷執行組的MySQL 功能已經足夠,那麼缺少事務處理支持對你來說可能不會產生什麼影響。(這裡真正的問題不是缺少事務處理;而是自動回退以取消失敗的語句。如果有一些應用具有復雜的財務事務處理,比如需要完成涉及必須作為一個組執行的幾個互鎖語句的處理,那麼可能會考慮使用具有提交/回退能力的數據庫,如使用P o s t g r e s。)某些缺少的功能將在未來實現。如,MySQL 不支持子查詢,但已計劃在版本3 . 2 4中給出,或許您讀到本書時它已經實現了。