天天看點

MySQL 超新手入門(1)重新開始MySQL與SQLOCP MySQL 5 Developer

三國演義

三國演義是一部在華人世界非常普及的曆史小說,是由羅貫中根據元朝的三國志平話改編,他以東漢末年魏、蜀、吳三國鬥争為主題,收集曆史資料和說書人的故事,成為這一部大家都非常熟悉的故事。或許我們現在覺得這些曆史已經跟我們沒什麼關系了,不過大家都知道關公過五關斬六将,劉備三顧茅蘆,諸葛孔明的空城記。這些老掉牙的故事,總是不斷的出現在電影、電視劇和各種平台的遊戲,一代又一代的傳承下去。這應該是因為三國演義的确是一個好故事,很多很精采的好故事,就像美國暢銷作家史帝芬金所說的,一個好故事是不會寂寞的。

三國演義的普及,讓人認為裡面講的故事其實就是真的曆史,羅貫中在編這本書的時候,大概是為了讓它可以比較戲劇化一些,采用了很多當時說書人的内容,這些内容是在民間流傳或由說書人編造的,跟曆史并不一樣。例如大家熟悉的關公斬華雄,在三國演義中是一段非常的精采故事,作者使用很短的内容讓關雲長的豪勇,簡單、清楚而且非常震憾的呈現給讀者。不過根據史料的考證,其實華雄的頭是被孫堅砍掉的。這也是為什麼清朝的時候就有人評論三國演義是「七實三虛,惑亂觀者」。

提倡白話文的胡适之,對三國演義的批評更是激烈,他認為三國演義把諸葛亮的足智多謀寫成一個呼風喚雨的妖道;張飛在曆史上其實是一個很有君子風度的武将,可是卻被寫成粗魯的莽夫。雖然有很多精采的故事,可是沒有經過更好的整理,是以三國演義在華人古典文學上的地位,一直不如紅樓夢(注),甚至連水浒傳都比不上。

MySQL 超新手入門(1)重新開始MySQL與SQLOCP MySQL 5 Developer

MySQL與SQL

MySQL在資訊應用的角色,好像跟三國演義這本著作有點類似。MySQL是目前最普及的資料庫伺服器,可是大家也最不在意它,可能因為它是一套免費的軟體,如果不要對它太過份,它會默默的在電腦中為你服務,在一般情況下都不太會出問題。MySQL跟其它一般的資料庫一樣,同樣支援ANSI SQL92,也加入少許MySQL自己特别的指令。不論是網頁或應用程式的開發人員,當你第一次接觸資料庫,學習SQL這種古老的指令,應該不會覺得太難。如果你正要進入開發應用程式的領域,在學習的路上,你會配置設定給SQL的時間應該也不會太多,因為它跟程式語言比較起來是比較單純一些的。

因為MySQL和SQL幾乎是最常見的應用,而且大家也覺得它們是簡單的,當然就不會在它們身上花太多時間。是以慢慢的我們會發現一些情況,有一些應用程式發生的問題,其實是來自MySQL資料庫伺服器和應用程式中的SQL叙述,這些問題相對是比較單純的,隻是大家忽略了。

例如MySQL提供友善好用的「LIMIT」子句,在應用程式中讓開發人員可以很容易完成一些特定的功能,例如網頁應用程式中的分頁查詢。不過LIMIT子句是MySQL才有的,如果應用程式更換資料庫伺服器,例如Oracle,應用程式就會産生一堆錯誤了。還有資料庫的交易(transaction)管理,MySQL預設的MYISAM儲存引擎并沒有支援交易管理,因為比較簡單一些,是以運作的效率也會比較好;如果應用程式需要執行交易管理,就要在建立資料庫的時候指定儲存引擎為InnoDB。

各種關于MySQL資料庫管理和SQL的問題,開發人員通常在遇到錯誤的時候,才會開始尋求解決問題的方法。這似乎也是MySQL的宿命,因為我們雖然一直在使用它,可是卻不太重視它,也認為這本來就是合理的,開發人員不應該配置設定太多時間給它。有一個很明顯的情況,在逛書局的時候,你應該已經看不到隻有讨論關于MySQL和SQL的書籍了。

OCP MySQL 5 Developer

在我們台灣這裡,跟開發人員相關的認證考試,這應該算是最冷門的OCP認證科目之一。這個認證考試的主要内容是MySQL的SQL,通過這個考試的人,表示它具備在應用程式中使用SQL的技能。你應該會覺的這是一個有點詭異的認證考試,它好像沒有存在的必要。對一個有經驗的開發人員來說,使用SQL的技能就像是本來就應該存在的,你甚至已經忘記當初是怎麼學會SQL;對一個新手來說,不會有人建議你去買一本關于SQL的書籍來學習這方面的技能,因為可能也買不到了,不過有各種網站提供SQL的學習,認識一些基礎的叙述後,遇到問題再說吧!

SQL在目前的環境下,越來越不受到開發人員的關愛,尤其是現在各種關于資料庫應用的架構,例如Hibernate和MyBatis,它們的任務就是要殺死SQL這隻遠古巨獸,讓開發人員不用受到SQL的煎熬。我也認為開發應用程式一直是一件很困難的事情,各種越來越進步的科技讓生活更友善,可是應用程式開發技術卻越來越複雜,開發人員必須具備的技能也更多,如果真的能有一種技術可以完全消滅SQL,那絕對是一件非常美好的事情。不過目前的情況應該還是有很多困難,就以大約十年前的應用程式來說,SQL還是一個必要的成員,除非放棄原來已經運作正常的程式,否則你還是要面對這些冗長的SQL叙述。

這就是「MySQL超新手入門」系列文章的目的,内容的範圍涵蓋OCP MySQL 5 Developer認證考試,因為它的範圍也是一個開發人員必須具備的SQL技能。從安裝MySQL資料庫與相關的工具程式開始,到學習所有MySQL提供的SQL,雖然是針對MySQL資料庫撰寫的,不過絕大部份都符合ANSI SQL92的标準,也就是在其它資料庫産品也可以正确的運作。

内容規劃為19章:

  1. 資料庫概論與 MySQL 安裝
  2. SELECT 基礎查詢
  3. 運算式與函式
  4. JOIN 與 UNION 查詢
  5. CRUD 與資料維護
  6. 字元集與資料庫
  7. 儲存引擎與資料型态
  8. 表格與索引
  9. 子查詢
  10. Views
  11. Prepared Statements
  12. Stored Routines入門
  13. Sotred Routines的變數與流程
  14. Stored Routines進階
  15. Triggers
  16. 資料庫資訊
  17. 錯誤處理與查詢
  18. 彙入與彙出資料
  19. 效率

在第一章介紹基本的資料庫概念與安裝需要的軟體後,第二章到第五章讨論基本的新增、修改、删除和查詢;第六章到第八章讨論資料庫、表格和索引的建立與管理,這個部份的内容會有比較多MySQL獨有的特色;第九章是子查詢;第十章到第十五章讨論資料庫進階的應用,這些在其它資料庫産品都會提供類似的技術,例如Oracle的PL/SQL;第十六章到第十九章讨論的内容比較偏向于資料庫管理和效率的進階應用,這些也是一個開發人員需要了解的。

注: 紅樓夢在文學上的重視讓它演變成一門「紅學」,可是紅樓夢的故事與人物對一般人來說,卻不如三國演義來得熟悉