[TOC]
>[success] ## MySQL 是什么
MySQL 是一款安全、跨平臺、高效的,并與 PHP、Java 等主流編程語言緊密結合的數據庫系統。該數據庫系統是由瑞典的 MySQL AB 公司開發、發布并支持,由 MySQL 的初始開發人員 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。
MySQL 的象征符號是一只名為 Sakila 的海豚,代表著 MySQL 數據庫的速度、能力、精確和優秀本質。
:-: 
目前 MySQL 被廣泛地應用在 Internet 上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,使得很多公司都采用 MySQL 數據庫以降低成本。
MySQL 數據庫可以稱得上是目前運行速度最快的 SQL 語言數據庫之一。除了具有許多其他數據庫所不具備的功能外,MySQL 數據庫還是一種完全免費的產品,用戶可以直接通過網絡下載 MySQL 數據庫,而不必支付任何費用。
>[success] ## MySQL 特點
下面總結了一下 MySQL 具備的特點。
<br>
<br>
>[info] ### 1) 功能強大
MySQL 中提供了多種數據庫存儲引擎,各引擎各有所長,適用于不同的應用場合,用戶可以選擇最合適的引擎以得到最高性能,可以處理每天訪問量超過數億的高強度的搜索 Web 站點。MySQL5 支持事務、視圖、存儲過程、觸發器等。
<br>
<br>
>[info] ### 2) 支持跨平臺
MySQL 支持至少 20 種以上的開發平臺,包括 Linux、Windows、FreeBSD 、IBMAIX、AIX、FreeBSD 等。這使得在任何平臺下編寫的程序都可以進行移植,而不需要對程序做任何的修改。
<br>
<br>
>[info] ### 3) 運行速度快
高速是 MySQL 的顯著特性。在 MySQL 中,使用了極快的 B 樹磁盤表(MyISAM)和索引壓縮;通過使用優化的單掃描多連接,能夠極快地實現連接;SQL 函數使用高度優化的類庫實現,運行速度極快。
<br>
<br>
>[info] ### 4) 安全性高
靈活和安全的權限與密碼系統,允許基本主機的驗證。連接到服務器時,所有的密碼傳輸均采用加密形式,從而保證了密碼的安全。
<br>
<br>
>[info] ### 5) 成本低
MySQL 數據庫是一種完全免費的產品,用戶可以直接通過網絡下載。
<br>
<br>
<br>
>[info] ### 6) 支持各種開發語言
MySQL 為各種流行的程序設計語言提供支持,為它們提供了很多的 API 函數,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 語言等。
<br>
<br>
<br>
>[info] ### 7) 數據庫存儲容量大
MySQL 數據庫的最大有效表尺寸通常是由操作系統對文件大小的限制決定的,而不是由 MySQL 內部限制決定的。InnoDB 存儲引擎將 InnoDB 表保存在一個表空間內,該表空間可由數個文件創建,表空間的最大容量為 64TB,可以輕松處理擁有上千萬條記錄的大型數據庫。
<br>
<br>
<br>
>[info] ### 8) 支持強大的內置函數
很多編程語言中提供了大量內置函數,幾乎涵蓋了 Web 應用開發中的所有功能。它內置了數據庫連接、文件上傳等功能,MySQL 支持大量的擴展庫,如 MySQLi 等,可以為快速開發 Web 應用提供便利。
<br>
<br>
>[success] ## 數據庫的應用
數據庫是計算機應用系統中的一種專門管理數據資源的系統。數據有多種形式,如文字、數碼、符號、圖形、圖像及聲音等,數據是所有計算機系統所要處理的對象。我們所熟知的一種處理辦法是制作文件,即將處理過程編成程序文件,將所涉及的數據按程序要求組成數據文件,再用程序來調用,數據文件與程序文件保持著一定的關系。
在計算機應用迅速發展的情況下,這種文件式管理方法便顯出它的不足。比如,它使得數據通用性差、不便于移植、在不同文件中存儲大量重復信息、浪費存儲空間、更新不便等。
而數據庫系統便能解決上述問題。數據庫系統不從具體的應用程序出發,而是立足于數據本身的管理,它將所有數據保存在數據庫中,進行科學的組織,并借助于數據庫管理系統,以它為中介,與各種應用程序或應用系統接口,使之能方便地使用數據庫中的數據。
其實簡單地說,數據庫就是一組經過計算機整理后的數據,存儲在一個或多個文件中,而管理這個數據庫的軟件就稱為數據庫管理系統。一般一個數據庫系統(Database System)
可以分為數據庫(Database)與數據管理系統(Database Management System,DBMS)兩個部分。主流的數據庫軟件有 Oracle、Informix、Sybase、SQL Server、PostgreSQL、MySQL、Access、FoxPro 和 Teradata 等等。
<br>
<br>
<br>
>[success] ## RDBMS 術語
在繼續討論 MySQL 數據庫系統之前,先讓我們來說明一些關于數據庫的術語定義:
* **數據庫**(Database):數據庫是帶有相關數據的表的集合。
* **表**(Table):表是帶有數據的矩陣。數據庫中的表就像一種簡單的電子表格。
* **列**(Column):每一列(數據元素)都包含著同種類型的數據,比如郵編。
* **行**(Row):行(又被稱為元組、項或記錄)是一組相關數據,比如有關訂閱量的數據。
* **冗余**(Redundancy):存儲兩次數據,以便使系統更快速。
* **主鍵**(Primary Key):主鍵是唯一的。同一張表中不允許出現同樣兩個鍵值。一個鍵值只對應著一行。
* **外鍵**(Foreign Key):用于連接兩張表。
* **復合鍵**(Compound Key):復合鍵(又稱組合鍵)是一種由多列組成的鍵,因為一列并不足以確定唯一性。
* **索引**(Index):它在數據庫中的作用就像書后的索引一樣。
* **引用完整性**(Referential Integrity):用來確保外鍵一直指向已存在的一行。