帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
開放源碼的資料庫大哥大 - MySQL
 

【作者: 謝一綸】   2004年09月27日 星期一

瀏覽人次:【2916】

MySQL是一個快速、多執行序(Multithread)、多使用者,以及功能強大的關聯式資料庫管理系統(Relational database management system,RDBMS)。它可以輕易地與C、C++、Java、Perl、PHP等語言作連結,也能夠運行於多種不同的作業平台上,包括Solaris、RedHat、Linux、FreeBSD、OS/2、Windows等都可以安裝這個功能強大的開放原始碼資料庫軟體。


MySQL的優點與特性

MySQL基本的SQL指令執行效率非常地快速,尤其是 “select/insert/update” 等相關指令執行的速度比商業軟體的資料庫(如MSSQL、Oracle)還要快上許多。MySQL同時也支援許多不同的語言,中文的Big5也在支援的名單內。


雖然MySQL是以Open Source為出發點的軟體,但它並不完全是一個免費的軟體,因為其版權在某些情況下是需要付費的,例如將它與其它產品一起包裝與販售、商業或營利單位使用,或製成一個套件等都需要付版權費。不過對於個人及非營利單位來說,它並不需要付任何的費用,且可任意地下載使用。


MySQL所收取的授權費主要是用來協助MySQL的研發所需,這也算是對為開放原始碼軟體作出貢獻的一些社群鼓勵。且透過這樣的付費機制,MySQL將會在這些社群的研發下,成長得更為茁壯、延展性也會更強。不過讀者要注意的一點是,「MySQL」的正確發音是「My Ess Que Ell」,而不是「My Sequel」。


《圖一 MySQL的登入畫面》
《圖一 MySQL的登入畫面》

當然,MySQL雖然是一款開放原始碼軟體,但性能卻一點也不遜於一般的商業軟體,下面就列出一些MySQL的優點:


  • * MySQL是免費的,且可提供原始碼,並支援中文Big5碼。


  • * MySQL的速度非常快,甚至比Oracle、MSSQL快,但功能項目卻不如Oracle完整。不過以網頁的前端介面而言,若未用到過量的資料交換(Transaction),則差別就不會很大。


  • * MySQL並無人數限制,完全視使用者的配備機器等級而定。不過和一些以Client的人數來作計費的資料庫系統相比,其建置成本幾乎是微不足道。


  • * 可設定系統密碼及個人使用權限。


  • * 有可變和固定的記錄(Records)大小。


  • * 每個表格允許有16個索引,而每個索引可以由1至16個列,或列的一部份組成。其最大索引的長度可達256 Bytes。


  • * 所有的欄位都可以有預設值。


  • * 包含了Isamchk這個工具。其工具可讓使用者快速檢查、最佳化和修復資料庫。


  • * 支援了ODBC的所有功能。舉例來說,使用者可以使用MS – Access連上MySQL Server來作管理或傳輸的動作。


  • * MySQL在設計之初就是以速度為第一考量,即使資料庫的Data超過100 GB,它也一樣能夠正常使用,並不會出現當機或延遲的情形。


  • * 支援遠端操控的功能,使用者可透過網路來存取或傳送資料。也就是說,我們可以透過網路將資料庫的資料送到遠端目的地,也可以將遠端電腦的資料傳進資料庫。



MySQL的不足之處

每個資料庫系統都有不同的優點與缺點,而MySQL也不例外。在這裡,我們將它與Access作個簡單的比較。


關聯性資料庫管理系統

Access是一個關聯性資料庫管理系統(Relational Database Management System,RDBMS),而MySQL卻並非在每一個層面都可以當作這種系統來使用。這也意味著,雖然MySQL很好用,但它還不是最好的資料庫軟體,因為MySQL無法處理複雜的關聯性資料庫,如子查詢(Subqueries)的功能。不過還是有替代方案,就是使用者可將大多數的子查詢功能改寫成“Join”,雖然意思不同,但功能卻很類似子查詢。


《圖二 Access的登入畫面》
《圖二 Access的登入畫面》

交易、確認/撤回

另一個MySQL所沒有支援的管理層面功能,是交易(Transaction)和確認(Commit)/撤回(Rollback)。 一個交易所需的是資料庫能夠被當作一個單位,以共同執行一群或一套命令。如果一個交易沒有辦法完成,那麼整個交易裡面就沒有一個指令能夠執行的下去。對於必須在線上處理訂單的商業網站來說,MySQL沒有支援這項功能,的確會讓他們覺得很失望。不過雖然MySQL本身沒有處理交易的功能,但可透過MaxSQL伺服器來執行這項任務。


MaxSQL是一個外掛形式的伺服器,它本身所提供的表格可用來支援交易的功能。


外來鍵的支援

外來鍵(Foreign key)和參考整合限制(Referential Integrity)可讓使用者訂定表格中的資料規則,然後將規則(Constraint)加到想要設定規則的資料裡面。不過一個有賴複雜的資料關係的應用程式並不適合使用MySQL,所以當有人說MySQL不支援外來鍵時,所指的就是資料庫的參考整合限制。MySQL除了沒有支援外來鍵規則之外,當然更沒有支援連鎖刪除效應(Cascading Delete)。簡單地說,如果使用者需要複雜的資料關係,那麼最好還是用原來的 Access吧。


此外,使用者在MySQL也不會找到預存程序(Stored Procedure)和觸發(Trigger)。而在Access裡,有提供相對事件程序(Event Procedure),以及GetRows功能,這是都是不錯的資料擷取功能。


《圖三 MySQL的連線示意圖》
《圖三 MySQL的連線示意圖》

MySQL的架構

在MySQL的架構中,包含了幾種資料型態。而在這裡,筆者將要介紹其中的基本資料型態,及具體的檔案資料型態。


MySQL的基本資料型態

MySQL的基本資料型態主要分為四類,以下將個別作個簡介:


數值資料(Numeric Values)

數值資料簡單來說,就是數字。其中包括一般的10進位數字,以及科學記號的表示法,如1.2 E + 12。此外,16進位的數字表示法也會顯示出來,如0XA8。


字串資料(String Values)

字串資料是由文字字元所組成的資料,在MySQL中的字串表示,是以「'」或「"」圍起來。而跳脫出字元,使用者可以在字串中放入特殊的值,如(表一):


表一 跳脫字元與意義解釋表

跳脫字元

 意義

 /0

 NUL,指的是字元ASCII0,不是NULL。

 /'

 單引號文字字元,「'」

 /"

 雙引號文字字元,「"」

 /b

 倒退

 /n

 換行

 /r

 回到最初

 /t

 跳行


日期與時間資料(Date and Time Values)

顧名思義,這是用來儲存日期與時間的資料。


NULL Values

NULL就是什麼都沒有,表示沒有任何的數值。在這種情況下,資料表中會顯示NULL。所以當使用者在建立資料表時,需要對表中的欄位設定其資料型態。在資料表的欄位中,有些參數是以選擇性的方式出現,在下定義時可以不用放上去。這些參數的意義分別是:


  • * ():刮號中的數字可指定資料的長度。


  • * M:這裡所代表的是指定資料最大長度,也就是字元的數目,例如8850是一個數字,但字元長度為“4”。


  • * D:這是用來指定浮點數型態的小數位數。


  • * ZEROFILL:這是用來在數值型態中,將不足的位數補0。


  • * UNSIGNED:這可以讓數值不會產生負數,只有正數與0。



MySQL具體的檔案資料型態

在上述的四種型態中,除了NULL之外,其他三類中又可以分成多欄位資料型態。這些型態如(表二)。


表二 資料型態說明表

資料型態

說明

TINYINT

有符號的範圍是-128到127,無符號的範圍是0到255。

SMALLINT

有符號的範圍是-32768到32767,無符號的範圍是0到65535。

MEDIUMINT

有符號的範圍是-8388608到8388607,無符號的範圍是0到16777215。

INT

有符號的範圍是-2147483648到2147483647,無符號的範圍是0到4294967295。

INTEGER

INT的同義詞。

BIGINT

有符號的範圍是-9223372036854775808到9223372036854775807,無符號的範圍是0到18446744073709551615。

FLOAT

單精密浮點數字。不能無符號。允許的值是-3.402823466E+38到-1.175494351E-38,0和1.175494351E-38到3.402823466E+38。

DOUBLE

雙精密)浮點數字。不能無符號。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。

DOUBLE PRECISION

DOUBLE的同義詞。

REAL

DOUBLE的同義詞。

DECIMAL

DECIMAL值的最大範圍與DOUBLE相同。

NUMERIC

DECIMAL的同義詞。

DATE

日期。其支援的範圍是“ 1000-01-01 ”到“ 9999-12-31 ”。

DATETIME

日期與時間組合。支援的範圍是 “1000-01-01 00:00: 00” 到“9999-12-31 23:59: 59”

TIMESTAMP

時間戳記。範圍是“1970-01-01 00:00: 00” 到2037年的某時。

TIME

一個時間。範圍是“-838:59:59'到'838:59: 59”

YEAR

2或4位數字格式的年(內定是4位)。允許的值是1901到2155。

CHAR

固定長度,1 - 255個字元。

VARCHAR

可變長度,1 - 255個字元。

TINYBLOB

二進位數值的欄位,最大長度為255(2^8-1)個字串。

TINYTEXT

最大長度為255(2^8-1)個字串。

MEDIUMBLOB

二進位數值的欄位,最大長度為16777215(2^24-1)個字串。

MEDIUMTEXT

最大長度為16777215(2^24-1)個字串。

LONGBLOB

二進位數值的欄位,最大長度為4294967295(2^32-1)個字串。

LONGTEXT

最大長度為4294967295(2^32-1)個字串。

ENUM

一個ENUM最多能有65535不同的值。 

SET

一個SET最多能有64個成員。


結語

《圖四 My SQL的使用畫面》
《圖四 My SQL的使用畫面》

MySQL是一個很出色的資料庫軟體,對許多中小企業(Small Medium Bussiness,SMB)來說,它不但可以替企業省去許多不必要的花費(如客戶端數目費、伺服器數目費等),且它還是一個半開放源碼的免費軟體,除了與其它的軟體Bundle起來,或再製出售的用途外,使用者可隨意地更改與使用。雖然功能並不會比其它的資料庫軟體強大,但也足以應付一個SMB所擁有的資料量了。


至於想要下載MySQL的讀者,可以到MySQL的官方網站(http://www.mysql.com)點選Downloads項目。在點選後,由於MySQL的網站上,提供了各項作業系統平台的版本,所以請讀者選擇適合您需要的版本下載就行了。


<作者為系統工程師,聯絡方式:billhsieh@gmail.com>


延 伸 閱 讀

本文介紹作者使用MYSQL服務的一些經驗,主要從以下幾個方面講解MYSQL服務規劃設計:1. MYSQL服務的安裝/配置的通用性;2. 系統的升級和資料遷移方便性;3. 備份和系統快速恢復。相關介紹請見「MySQL服務維護筆記」一文。

MySQL,出自瑞典MySQL公司的開放原始碼資料庫軟體,目前對資料庫大廠Oracle、IBM、Microsoft,及Sybase等公司產生威脅。本文將對MySQL公司作個簡介。你可在「IT業界名詞解釋:MySQL」一文中得到進一步的介紹。
MySQL是的客戶端/伺服器結構,它由一個伺服器守護程式mysqld和很多不同的客戶程式和資料庫所組成。SQL是一種標準化的語言,它使得存儲、更新資訊更容易。MySQL主要目標是快速、健壯和易用,並可在不同的平台上應用。在「VoWLAN通訊系統設計中的技Linux伺服器配置MySQL方案」一文為你做了相關的評析。
相關組織網站
MySQL官方網站
phpmyadmin MySQL研發計劃網站
PHP/MySQL教學網站
相關文章
個人電腦架構整合汽車媒體中心
克服數位權利管理應用障礙
數位出版品的守護者 - DRM
無線影音處理與保護技術
comments powered by Disqus
相關討論
  相關新聞
» 施耐德電機響應星展銀行ESG Ready Program 為台灣打造減碳行動包
» 台達推出5G ORAN小型基地台 實現智慧工廠整合AI應用
» 歐洲航太技術展在德國盛大展開,全球吸睛 鐳洋推出衛星通訊整合方案,目標搶佔龐大的歐洲衛星商機
» 經濟部促成3GPP大會來台爭話語權 大廠共商5G/6G技術標準
» 經濟部支持跨國研發有成 台歐雙方分享B5G~6G規劃


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.18.116.86.132
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw