MySQL

**MySQL**（官方發音為 /maɪ ˌɛskjuːˈɛl/「My S-Q-L」，但也經常被讀作 /maɪ ˈsiːkwəl/「My Sequel」）原本是一個開放原始碼的關聯式資料庫管理系統，原開發者為瑞典的 MySQL AB 公司，該公司於 2008 年被昇陽微系統（Sun Microsystems）收購。2009 年，甲骨文公司（Oracle）收購昇陽微系統公司，MySQL 成為 Oracle 旗下產品。

MySQL 在過去由於效能高、成本低、可靠性好，已經成為最流行的開源資料庫，因此被廣泛地應用在 Internet 上的中小型網站中。隨著 MySQL 的不斷成熟，它也逐漸用於更多大規模網站和應用，比如維基百科、Google 和 Facebook 等網站。非常流行的開源軟體組合 LAMP 中的「M」指的就是 MySQL。

但被甲骨文公司收購後，Oracle 大幅調漲 MySQL 商業版的售價，且甲骨文公司不再支援另一個自由軟體專案 OpenSolaris 的發展，因此導致自由軟體社群們對於 Oracle 是否還會持續支援 MySQL 社群版（MySQL 之中唯一的免費版本）有所隱憂，MySQL 的創始人麥克爾・維德紐斯以 MySQL 為基礎，成立分支計劃 MariaDB。而原先一些使用 MySQL 的開源軟體逐漸轉向 MariaDB 或其它的資料庫。例如維基百科已於 2013 年正式宣布將從 MySQL 遷移到 MariaDB 資料庫。

MySQL 的 license 現在分為免費的社群版與收費的標準版、企業版等。一般說來，如果在非開源專案中發布了 MySQL，或者需要 Oracle 公司提供對 MySQL 的技術支援，或者使用 MySQL 的一些企業版工具或外掛程式，或者修改 MySQL 原始碼並作為閉源的軟體等等情形，需要購買商業版本。如果只是安裝並使用 MySQL，甚至修改並使用 MySQL，無論是否收費；或者軟體中不包含 MySQL，軟體的使用者自行安裝 MySQL；或者使用 GPL 協定的開源軟體產品中包含了 MySQL，這些情形可能使用社群版 MySQL。

## 歷史

* 2008 年 1 月 16 日，Sun（昇陽電腦）正式收購 MySQL。
* 2009 年 4 月 20 日，甲骨文公司宣布以每股 9.50 美元，74 億美元的總額收購 Sun 電腦公司。
* 2013 年 6 月 18 日，甲骨文公司修改 MySQL 授權協定，移除了 GPL。但隨後有訊息稱這是一個 bug。

## 特性

* 使用 C 和 C++ 編寫，並使用了多種編譯器進行測試，保證原始碼的可移植性。
* 支援 AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell NetWare、NetBSD、OpenBSD、OS/2 Wrap、Solaris、Windows 等多種作業系統。
* 為多種程式語言提供了 API。這些程式語言包括 C、C++、C#、VB.NET、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby 和 Tcl 等。
* 支援多執行緒，充分利用 CPU 資源，支援多使用者。
* 最佳化的 SQL 查詢演算法，有效地提高查詢速度。
* 既能夠作為一個單獨的應用程式在客戶端伺服器網路環境中執行，也能夠作為一個程式庫而嵌入到其他的軟體中。
* 提供多語言支援，常見的編碼如中文的 GB 2312、BIG5，日文的 Shift JIS 等都可以用作資料表名和資料列名。
* 提供 TCP/IP、ODBC 和 JDBC 等多種資料庫連接途徑。
* 提供用於管理、檢查、最佳化資料庫操作的管理工具。
* 可以處理擁有上千萬條記錄的大型資料庫。

## 應用

與其他的大型資料庫例如 Oracle、IBM DB2、MS SQL 等相比，MySQL 自有它的不足之處，如規模小、功能有限等，但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說，MySQL 提供的功能已經綽綽有餘，而且由於 MySQL 是開放原始碼軟體，因此可以大大降低總體擁有成本。

2010 年以前 Internet 上流行的網站構架方式是 LAMP（Linux Apache MySQL PHP），即是用 Linux 作為作業系統，Apache 作為網頁伺服器，MySQL 作為資料庫，PHP（部分網站也使用 Perl 或 Python）作為伺服器端指令碼解釋器。由於這四個軟體都是開放原始碼軟體，因此使用這種方式可以以較低的成本建立起一個穩定、免費的網站系統。MySQL 加 PHP 的配對在網際網路上的應用相比 LAMP 來說更為常見，並獲得了「動態配對」（Dynamic Duo）的雅號，大部分 Blog 網站基於的 WordPress 系統主要運用 MySQL 加 PHP 的配對。除了 LAMP 之外，用於 Solaris、Windows 和 Mac 上的網站構架也分別被稱為 SAMP、WAMP 和 MAMP。

維基百科所使用的 Mediawiki 維基引擎採用 PHP 語言寫成，並以 MySQL 作為其支援的其中一種資料庫管理系統。

## MySQL 管理

* 可以使用命令列工具管理 MySQL 資料庫（命令 mysql 和 mysqladmin），也可以從 MySQL 的網站下載圖形管理工具 MySQL Workbench。
* Navicat 是一套專為 MySQL 設計的強大資料庫管理及開發工具。它可以用於任何版本的 MySQL 資料庫，並支援大部份 MySQL 的功能，包括觸發器、索引、檢視等。
* phpMyAdmin 是由 PHP 寫成的 MySQL 資料庫系統管理程式，讓管理者可用 Web 介面管理 MySQL 資料庫。藉由此 Web 介面可以成為一個簡易方式輸入繁雜 SQL 語法的較佳途徑，尤其要處理大量資料的匯入及匯出更為方便。其中一個更大的優勢在於由於 phpMyAdmin 跟其他 PHP 程式一樣在網頁伺服器上執行，但是您可以在任何地方使用這些程式產生的 HTML 頁面，也就是於遠端管理你的 MySQL 資料庫。使用 phpMyAdmin 您就可以方便的建立、修改、刪除資料庫及資料表。
* phpMyBackupPro 也是由 PHP 寫成的，可以透過 Web 介面建立和管理資料庫。它可以建立偽 cronjobs，可以用來自動在某個時間或週期備份 MySQL 資料庫。

## 連接方式

* 應用程式可透過 ODBC 或 ADO 方式，經由使用 MyODBC（頁面存檔備份，存於網際網路檔案館）與 MySQL 資料庫連接。
* MS .Net Framework 下的程式（例如：C#、VB.NET）可透過 ADO.NET 的方式，經由使用 MySQL.Net（頁面存檔備份，存於網際網路檔案館）與 MySQL 資料庫連接。
* C/C++ 可使用 MySQL++（頁面存檔備份，存於網際網路檔案館）或是直接使用 MySQL 內建 API 與 MySQL 資料庫連接。
* PHP 可透過 PHP 的 MySQLi 與 MySQL 資料庫連接，具備比 MySQL 模組（頁面存檔備份，存於網際網路檔案館）更好的效能。另外 PHP6 可使用 mysqlnd 與 MySQL 資料庫連接。[1]（頁面存檔備份，存於網際網路檔案館）
* JAVA 程式可透過 JDBC 方式與 MySQL 進行連接，MySQL 官方提供了 JDBC 驅動程式。
* 可透過 MySQL 客戶端軟體與 MySQL 進行連接，如 mysqlfront、mysqlyog、mysqlbrowser 等。
* javascript 可以透過使用 fibjs 的內建 mysql 模組 [2]（頁面存檔備份，存於網際網路檔案館）與 MySQL 資料庫連接

## 衍生版本

衍生版本有 Drizzle、MariaDB、Percona Server 及 OurDelta 等。

## 參考文獻

## 外部連結

* 官方網站
* MySQL 開發者主頁
* MySQL Weblogs（頁面存檔備份，存於網際網路檔案館）
* MySQL 社區
* 中國 MySQL 社區
* CentOS7 下安裝 MySQL（頁面存檔備份，存於網際網路檔案館）