<!DOCTYPE html> <html lang="zh-TW"> <head> <meta charset="utf-8"> <title>HTML5練習</title> <!-- 頁內樣式表設定 --> <style type="text/css"> body { background:rgb(245,245,245); font-family:微軟正黑體; margin:0px; } h1 { font-weight:bold; font-size:36px; color: #233F69; text-shadow:2px 2px 4px gray; border-left:4px solid red; padding-left: 10px; line-height: 1em; } h2 { font-size:24px; color:black; text-shadow:1px 1px 3px gray; } h3 { font-weight:bold; font-size:18px; text-shadow:1px 1px 2px #cfcfcf; border-left:4px solid red; padding-left: 10px; line-height: 1em; } p { font-size:12pt; line-height:1.8; /* 行高 */ } #wrap{ margin:0px; } #container{ width:980px; margin:10px auto; } #header{ } #main{ background:rgb(255,255,255); /* overflow: auto; 請取消註解 */ box-shadow: 0px 0px 3px 1px #dfdfdf; } #content{ float: left; width:599px; padding:30px; border-right: 1px solid #cfcfcf; } #sidebar{ float: left; width: 320px; } #author{ margin:0px 20px; } .avarta{ width:80px; border-radius: 8px; float:left; margin-right: 15px; } .avarta:hover{ box-shadow: 2px 2px 3px 0px gray; } .author_name{ font-size: 18px; color:red; } #author_content{ clear:left; color:gray; line-height: 180%; font-size: 14px; text-align: justify; margin-top: 20px; border:20px solid #cfcfcf; border-image: url(images/border.png) 28 / 1 / 0 round; } #footer{ } ul.nav{ clear:both; background-color: #EDEDED; height:40px; /* 讓工具列不要太扁 */ line-height: 40px; /* 讓按鍵垂直置中 */ padding: 0px; /* 取消工具列左邊的空白 */ } ul.nav li{ display: inline; /* 讓清單變成一橫列 */ list-style-type:none; /* 把項目符號取消 */ } ul.nav li > a{ /* 正常狀態的連結按鈕 */ color:black; /* 黑色 */ text-decoration: none; /* 去除底線 */ padding: 10px 20px; /* 和隔壁按鈕區隔開來 */ } ul.nav li > a:hover{ /* 滑鼠移到連結按鈕上時 */ color:white; /* 文字變白色 */ background-color: #B31C1C; /* 背景變紅色 */ } </style> </head> <body> <div id="wrap"> <div id="container"> <div id="header"> <a name="tool"></a> <ul class="nav"> <li><a href="#p1">三國演義</a></li> <li><a href="#p2">MySQL與SQL</a></li> <li><a href="#p3">OCP MySQL 5 Developer</a></li> <li><a href="#p4">數學運算</a></li> </ul> </div> <div id="main"> <div id="content"> <img src="images/MySQLTutorial.jpg" alt="logo圖" title="logo圖" style="width:100%;"> <h1>MySQL 超新手入門(1)重新開始</h1> <div> <h2><a name="p1">三國演義</a></h2> <a href="#tool">回工具列</a> <p>三國演義是一部在華人世界非常普及的歷史小說,是由羅貫中根據元朝的三國志平話改編,他以東漢末年魏、蜀、吳三國鬥爭為主題,收集歷史資料和說書人的故事,成為這一部大家都非常熟悉的故事。或許我們現在覺得這些歷史已經跟我們沒什麼關係了,不過大家都知道關公過五關斬六將,劉備三顧茅蘆,諸葛孔明的空城記。這些老掉牙的故事,總是不斷的出現在電影、電視劇和各種平台的遊戲,一代又一代的傳承下去。這應該是因為三國演義的確是一個好故事,很多很精采的好故事,就像美國暢銷作家史帝芬金所說的,一個好故事是不會寂寞的。</p> <p>三國演義的普及,讓人認為裡面講的故事其實就是真的歷史,羅貫中在編這本書的時候,大概是為了讓它可以比較戲劇化一些,採用了很多當時說書人的內容,這些內容是在民間流傳或由說書人編造的,跟歷史並不一樣。例如大家熟悉的關公斬華雄,在三國演義中是一段非常的精采故事,作者使用很短的內容讓關雲長的豪勇,簡單、清楚而且非常震憾的呈現給讀者。不過根據史料的考證,其實華雄的頭是被孫堅砍掉的。這也是為什麼清朝的時候就有人評論三國演義是「七實三虛,惑亂觀者」。</p> <p>提倡白話文的胡適之,對三國演義的批評更是激烈,他認為三國演義把諸葛亮的足智多謀寫成一個呼風喚雨的妖道;張飛在歷史上其實是一個很有君子風度的武將,可是卻被寫成粗魯的莽夫。雖然有很多精采的故事,可是沒有經過更好的整理,所以三國演義在華人古典文學上的地位,一直不如紅樓夢(註),甚至連水滸傳都比不上。</p> </div> <div> <h2><a name="p2">MySQL與SQL</a></h2> <a href="#tool">回工具列</a> <p><a href="files/南台科大.docx">MySQL</a>在資訊應用的角色,好像跟三國演義這本著作有點類似。MySQL是目前最普及的資料庫伺服器,可是大家也最不在意它,可能因為它是一套免費的軟體,如果不要對它太過份,它會默默的在電腦中為你服務,在一般情況下都不太會出問題。MySQL跟其它一般的資料庫一樣,同樣支援ANSI SQL92,也加入少許MySQL自己特別的指令。不論是網頁或應用程式的開發人員,當你第一次接觸資料庫,學習SQL這種古老的指令,應該不會覺得太難。如果你正要進入開發應用程式的領域,在學習的路上,你會分配給SQL的時間應該也不會太多,因為它跟程式語言比較起來是比較單純一些的。</p> <p>因為MySQL和SQL幾乎是最常見的應用,而且大家也覺得它們是簡單的,當然就不會在它們身上花太多時間。所以慢慢的我們會發現一些情況,有一些應用程式發生的問題,其實是來自MySQL資料庫伺服器和應用程式中的SQL敘述,這些問題相對是比較單純的,只是大家忽略了。</p> <p>例如MySQL提供方便好用的「LIMIT」子句,在應用程式中讓開發人員可以很容易完成一些特定的功能,例如網頁應用程式中的分頁查詢。不過LIMIT子句是MySQL才有的,如果應用程式更換資料庫伺服器,例如Oracle,應用程式就會產生一堆錯誤了。還有資料庫的交易(transaction)管理,MySQL預設的MYISAM儲存引擎並沒有支援交易管理,因為比較簡單一些,所以運作的效率也會比較好;如果應用程式需要執行交易管理,就要在建立資料庫的時候指定儲存引擎為InnoDB。</p> <p>各種關於MySQL資料庫管理和SQL的問題,開發人員通常在遇到錯誤的時候,才會開始尋求解決問題的方法。這似乎也是MySQL的宿命,因為我們雖然一直在使用它,可是卻不太重視它,也認為這本來就是合理的,開發人員不應該分配太多時間給它。有一個很明顯的情況,在逛書局的時候,你應該已經看不到只有討論關於MySQL和SQL的書籍了。</p> </div> <div> <h2><a name="p3">OCP MySQL 5 Developer</a></h2> <a href="#tool">回工具列</a> <p>在我們台灣這裡,跟開發人員相關的認證考試,這應該算是最冷門的OCP認證科目之一。這個認證考試的主要內容是MySQL的SQL,通過這個考試的人,表示它具備在應用程式中使用SQL的技能。你應該會覺的這是一個有點詭異的認證考試,它好像沒有存在的必要。對一個有經驗的開發人員來說,使用SQL的技能就像是本來就應該存在的,你甚至已經忘記當初是怎麼學會SQL;對一個新手來說,不會有人建議你去買一本關於SQL的書籍來學習這方面的技能,因為可能也買不到了,不過有各種網站提供SQL的學習,認識一些基礎的敘述後,遇到問題再說吧!</p> <p>SQL在目前的環境下,越來越不受到開發人員的關愛,尤其是現在各種關於資料庫應用的框架,例如Hibernate和MyBatis,它們的任務就是要殺死SQL這隻遠古巨獸,讓開發人員不用受到SQL的煎熬。我也認為開發應用程式一直是一件很困難的事情,各種越來越進步的科技讓生活更方便,可是應用程式開發技術卻越來越複雜,開發人員必須具備的技能也更多,如果真的能有一種技術可以完全消滅SQL,那絕對是一件非常美好的事情。不過目前的情況應該還是有很多困難,就以大約十年前的應用程式來說,SQL還是一個必要的成員,除非放棄原來已經運作正常的程式,否則你還是要面對這些冗長的SQL敘述。</p> <p>這就是「MySQL超新手入門」系列文章的目的,內容的範圍涵蓋OCP MySQL 5 Developer認證考試,因為它的範圍也是一個開發人員必須具備的SQL技能。從安裝MySQL資料庫與相關的工具程式開始,到學習所有MySQL提供的SQL,雖然是針對MySQL資料庫撰寫的,不過絕大部份都符合ANSI SQL92的標準,也就是在其它資料庫產品也可以正確的運作。</p> </div> <div> <h2><a name="p4">數學運算</a></h2> <a href="#tool">回工具列</a> <p>除了查詢表格中的欄位外,你可以加入任何需要的運算,這裡先討論一般常見的數學運算。下列是很常用來執行數學運算的運算子:</p> <table border=1> <tr> <th>優先順序</th> <th>運算子</th> <th>說明</th> <th>範例</th> <th>運算結果</th> </tr> <tr> <td>1</td> <td>%</td> <td>餘數</td> <td>7 % 3</td> <td>1</td> </tr> <tr> <td>1</td> <td>MOD</td> <td>餘數</td> <td>7 MOD 3</td> <td>1</td> </tr> <tr> <td>1</td> <td>* </td> <td>乘</td> <td>7 * 3</td> <td>21</td> </tr> <tr> <td>1</td> <td>/</td> <td>除</td> <td>7 / 3</td> <td>2.333</td> </tr> <tr> <td>1</td> <td>DIV</td> <td>除(整數)</td> <td>7 DIV 3</td> <td>2</td> </tr> <tr> <td>2</td> <td>+</td> <td>加</td> <td>7 + 3</td> <td>10</td> </tr> <tr> <td>2</td> <td>-</td> <td>減</td> <td>7 – 3</td> <td>4</td> </tr> </table> </div> <div> 內容規劃為19章: <ol> <li>資料庫概論與 MySQL 安裝</li> <li>SELECT 基礎查詢</li> <li>運算式與函式</li> <li>JOIN 與 UNION 查詢</li> <li>CRUD 與資料維護</li> <li>字元集與資料庫</li> <li>儲存引擎與資料型態</li> <li>表格與索引</li> <li>子查詢</li> <li>Views</li> <li>Prepared Statements</li> <li>Stored Routines入門</li> <li>Sotred Routines的變數與流程</li> <li>Stored Routines進階</li> <li>Triggers</li> <li>資料庫資訊</li> <li>錯誤處理與查詢</li> <li>匯入與匯出資料</li> <li>效率</li> </ol> </div> <div> 參考資料: <ul> <li>三國演義校注,羅貫中原著,吳小林校註,里仁書局</li> <li>三國演義的文學特質及其悲劇藝術,羅龍治</li> <li><a href="http://www.oracle.com" target="_blank">http://www.oracle.com</a></li> </ul> </div> </div> <div id="sidebar"> <div id="author"> <h3>關於作者</h3> <div id="author_title"> <img src="images/shikaku.png" class="avarta"> <div class="author_name">Michael</div> <img src="images/us-facebook.png" class="icon"> <img src="images/us-inlink.png" class="icon"> <img src="images/us-email.png" class="icon"> </div> <div id="author_content"> 目前是自由講師與作者,專長是教育訓練課程規劃、教材編製與課程推廣,技術書籍與專欄寫作。涵蓋的領域有OOAD、Java程式設計、JavaFX、Oracle ADF、Android與SQL。熱衷於教育訓練,有十年以上的教學經驗,曾任台灣昇陽教育訓練中心講師,甲骨文授權教育訓練中心講師,於Java TWO與Java認證日負責Java FX與Oracle ADF專題演講。 </div> </div> </div> </div> <ul class="nav"> <li><a href="#p1">三國演義</a></li> <li><a href="#p2">MySQL與SQL</a></li> <li><a href="#p3">OCP MySQL 5 Developer</a></li> <li><a href="#p4">數學運算</a></li> </ul> <div id="footer"> <div> <a href="mailto:tad@tn.edu.tw?subject=我有意見或建議">寄信給站長</a> </div> </div> </div> </div> </body> </html>