MySQL™ 參考手冊(MySQL數據庫管理系統概述)

MySQL數據庫管理系統概述

MySQL是最受歡迎的開源SQL數據庫管理系統,由Oracle Corporation開發、分發和支持。html

什麼是MySQL?

MySQL網站(http://www.mysql.com/)提供有關MySQL軟件的最新信息。mysql

  • MySQL是一個數據庫管理系統

數據庫是數據的結構化集合,它能夠是從簡單的購物清單到圖片庫或公司網絡中的大量信息。要添加、訪問和處理存儲在計算機數據庫中的數據,你須要一個數據庫管理系統,如MySQL Server。因爲計算機很是擅長處理大量數據,所以數據庫管理系統在計算、做爲獨立的實用程序或其餘應用程序的一部分中發揮着核心做用。web

  • MySQL數據庫是關係型的

關係型數據庫將數據存儲在單獨的表中,而不是將全部數據放在一個大的庫房中,數據庫結構被組織成針對速度優化的物理文件。邏輯模型具備數據庫、表、視圖、行和列等對象,可提供靈活的編程環境。你能夠設置規則來控制不一樣數據字段之間的關係,例如一對1、一對多、惟1、必需或可選,以及不一樣表之間的「指針」。數據庫強制執行這些規則,所以使用設計良好的數據庫,你的應用程序永遠不會看到不一致、重複、孤立、過時或丟失的數據。 sql

「MySQL」的SQL部分表明「結構化查詢語言」,SQL是用於訪問數據庫的最經常使用的標準化語言。取決於你的編程環境,你能夠直接輸入SQL(例如,生成報告)、將SQL語句嵌入到用其餘語言編寫的代碼中,或使用隱藏SQL語法的特定於語言的API。數據庫

SQL由ANSI/ISO SQL標準定義,SQL標準自1986年以來一直在發展,而且存在多個版本。在本手冊中,「SQL-92」是指1992年發佈的標準,「SQL:1999」是指1999年發佈的標準,「SQL:2003」是指當前版本的標準,在任什麼時候候都使用短語「SQL標準」來表示當前版本的SQL標準。編程

  • MySQL軟件是開源的

開源意味着任何人均可以使用和修改軟件,任何人均可以從互聯網上下載MySQL軟件並使用它而無需支付任何費用,若是你願意,你能夠學習源代碼並根據須要進行更改。MySQL軟件使用GPL(GNU通用公共許可證)http://www.fsf.org/licenses/來定義在不一樣狀況下你能夠和不可使用該軟件的內容,若是你對GPL感到不舒服或須要將MySQL代碼嵌入到商業應用程序中,你能夠從oracle購買商業許可版本,有關更多信息,請參閱MySQL許可概述(http://www.mysql.com/company/...)。segmentfault

  • MySQL數據庫服務器很是快速、可靠、可伸縮且易於使用

若是這正是你正在尋找的,那麼你應該嘗試一下。MySQL Server能夠在臺式機或筆記本電腦上輕鬆運行,與其餘應用程序、Web服務器等一塊兒運行,幾乎不須要注意什麼。若是你將整臺機器專用於MySQL,則能夠調整設置以利用全部可用的內存、CPU功率和I/O容量,MySQL還能夠擴展到聯網的集羣機器。後端

MySQL Server最初是爲了比現有解決方案更快地處理大型數據庫而開發的,而且已經成功地在高要求的生產環境中使用了好幾年,儘管在不斷的開發中,MySQL Server提供了一組豐富而有用的功能,它的鏈接性、速度和安全性使MySQL Server很是適合訪問Internet上的數據庫。安全

  • MySQL Server適用於客戶端/服務器或嵌入式系統

MySQL數據庫軟件是一個客戶端/服務器系統,由支持不一樣後端的多線程SQL服務器、幾個不一樣的客戶端程序和庫、管理工具、和普遍的應用程序編程接口(API)組成。服務器

還提供MySQL Server做爲嵌入式多線程庫,你能夠將其連接到你的應用程序,以得到更小、更快、更易於管理的獨立產品。

  • 大量貢獻的MySQL軟件是可用的

MySQL Server有一組與用戶緊密合做開發的實用功能,你最喜歡的應用程序或語言極可能支持MySQL數據庫服務器。

MySQL的主要特性

本節介紹MySQL數據庫軟件的一些重要特性,在大多數方面,該路線圖適用於全部版本的MySQL,有關在特定於系列的基礎上引入MySQL的特性的信息,請參閱相應手冊。

內部結構和可移植性

  • 用C和C++編寫。
  • 通過普遍的不一樣編譯器測試。
  • 適用於許多不一樣的平臺,請參閱https://www.mysql.com/support...
  • 爲了可移植性,在MySQL 5.5及以上版本中使用CMake,之前的系列使用GNU Automake,Autoconf和Libtool。
  • 使用Purify(商業內存泄漏檢測器)以及GPL工具Valgrind(http://developer.kde.org/~sew...)進行測試。
  • 使用具備獨立模塊的多層服務器設計。
  • 設計爲使用內核線程徹底多線程,以便在可用時輕鬆使用多個CPU。
  • 提供事務性和非事務性存儲引擎。
  • 使用具備索引壓縮的很是快速的B樹磁盤表(MyISAM)。
  • 設計爲使添加其餘存儲引擎相對容易,若是要爲內部數據庫提供SQL接口,這很是有用。
  • 使用很是快速的基於線程的內存分配系統。
  • 使用優化的內嵌循環鏈接執行很是快速的鏈接。
  • 實現內存中的哈希表,用做臨時表。
  • 使用應儘量快的高度優化的類庫實現SQL函數,一般在查詢初始化以後根本沒有內存分配。
  • 將服務器做爲單獨的程序提供,用於客戶端/服務器網絡環境,以及做爲可嵌入(連接)到獨立應用程序的庫,此類應用程序能夠單獨使用,也能夠在沒有網絡的環境中使用。

數據類型

  • 許多數據類型:一、二、三、4和8字節長的有符號/無符號整數、FLOATDOUBLECHARVARCHARBINARYVARBINARYTEXTBLOBDATETIMEDATETIMETIMESTAMPYEARSETENUM和OpenGIS空間類型.
  • 固定長度和可變長度的字符串類型。

語句和函數

  • 查詢的SELECT列表和WHERE子句中提供完整的操做符和函數支持,例如:

    mysql> SELECT CONCAT(first_name, ' ', last_name)
       -> FROM citizen
       -> WHERE income/dependents > 10000 AND age > 30;
  • 徹底支持SQL GROUP BYORDER BY子句,支持組函數(COUNT()AVG()STD()SUM()MAX()MIN()GROUP_CONCAT())。
  • 使用標準SQL和ODBC語法支持LEFT OUTER JOINRIGHT OUTER JOIN
  • 根據標準SQL的要求支持表和列上的別名。
  • 支持DELETEINSERTREPLACEUPDATE以返回已更改(受影響)的行數,或經過在鏈接到服務器時設置標誌來返回匹配的行數。
  • 支持特定於MySQL的SHOW語句,用於檢索有關數據庫、存儲引擎、表和索引的信息,支持INFORMATION_SCHEMA數據庫,根據標準SQL實現。
  • EXPLAIN語句,用於顯示優化器如何解析查詢。
  • 表名或列名中函數名的獨立性。例如,ABS是有效的列名,惟一的限制是,對於函數調用,函數名和它後面的「(」之間不容許有空格。
  • 你能夠在同一語句中引用來自不一樣數據庫的表。

安全性

  • 特權和密碼系統,很是靈活和安全,能夠進行基於主機的驗證。
  • 密碼安全性是經過加密鏈接到服務器時的全部密碼通訊。

可擴展性和限制

  • 支持大型數據庫,將MySQL Server與包含5000萬條記錄的數據庫結合使用,使用MySQL服務器的用戶有200,000個表和大約5,000,000,000行。
  • 每一個表最多支持64個索引,每一個索引能夠由1到16列或列的一部分組成,InnoDB表的最大索引寬度爲767字節或3072字節,MyISAM表的最大索引寬度爲1000個字節,索引可使用CHARVARCHARBLOBTEXT列類型列的前綴。

鏈接性

  • 客戶端可使用多種協議鏈接到MySQL Server:

    • 客戶端能夠在任何平臺上使用TCP/IP sockets進行鏈接。
    • 在Windows系統上,若是在啓用named_pipe系統變量的狀況下啓動服務器,則客戶端可使用命名管道進行鏈接。若是在啓用shared_memory系統變量的狀況下啓動,Windows服務器也支持共享內存鏈接,客戶端可使用--protocol=memory選項經過共享內存進行鏈接。
    • 在Unix系統上,客戶端可使用Unix域socket文件進行鏈接。
  • MySQL客戶端程序能夠用多種語言編寫,用C編寫的客戶端庫可用於用C或C++編寫的客戶端,或者用於提供C綁定的任何語言。
  • 提供適用於C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl的API,使MySQL客戶端可以以多種語言編寫。
  • Connector/ODBC(MyODBC)接口爲使用ODBC(開放式數據庫鏈接)鏈接的客戶端程序提供MySQL支持。例如,你可使用MS Access鏈接到MySQL服務器,客戶端能夠在Windows或Unix上運行。Connector/ODBC源可用,與許多其餘功能同樣,支持全部ODBC 2.5功能。
  • Connector/J接口爲使用JDBC鏈接的Java客戶端程序提供MySQL支持,客戶端能夠在Windows或Unix上運行,Connector/J源可用。
  • MySQL Connector/NET使開發人員可以輕鬆建立須要與MySQL進行安全、高性能數據鏈接的.NET應用程序,它實現了所需的ADO.NET接口,並集成到ADO.NET感知工具中,開發人員可使用他們選擇的.NET語言來構建應用程序,MySQL Connector/NET是一個徹底託管的ADO.NET驅動程序,用100%純C#編寫。

本地化

  • 服務器能夠以多種語言向客戶端提供錯誤消息。
  • 徹底支持幾種不一樣的字符集,包括latin1(cp1252)、germanbig5ujis,幾個Unicode字符集等等,例如,表和列名稱中容許使用斯堪的納維亞字符「å」、「ä」和「ö」。
  • 全部數據都保存在所選字符集中。
  • 根據默認字符集和排序規則進行排序和比較,啓動MySQL服務器時能夠更改此設置,要查看很是高級排序的示例,請查看Czech排序代碼,MySQL Server支持許多可在編譯時和運行時指定的不一樣字符集。
  • 能夠動態更改服務器時區,而且各個客戶端能夠指定本身的時區。

客戶端和工具

  • MySQL包括幾個客戶端和實用程序,這些包括命令行程序,如mysqldumpmysqladmin,以及圖形程序,如MySQL Workbench
  • MySQL Server內置支持SQL語句來檢查、優化和修復表,這些語句能夠從命令行經過mysqlcheck客戶端得到,MySQL還包括myisamchk,這是一個很是快速的命令行實用程序,用於在MyISAM表上執行這些操做。
  • 可使用--help-?選項調用MySQL程序得到在線幫助。

MySQL的歷史

Oracle一開始打算使用mSQL數據庫系統,使用他們快速低級(ISAM)例程鏈接到表,可是,通過一些測試,得出的結論是,mSQL不夠快或不夠靈活,沒法知足需求。這致使了數據庫的新SQL接口,但具備與mSQL幾乎相同的API接口,此API旨在使編寫用於mSQL的第三方代碼能夠輕鬆移植到MySQL。

MySQL以聯合創始人Monty Widenius的女兒My命名。

MySQL Dolphin(logo)的名稱是「Sakila」,它是從「海豚名人」比賽用戶建議的大量名字中選出的,獲獎名稱由非洲斯威士蘭的開源軟件開發商Ambrose Twebaze提交,根據Ambrose的說法,女性化的名字Sakila源於SiSwati,Swaziland的當地語言,Sakila也是坦桑尼亞阿魯沙一個小鎮的名字,靠近Ambrose的原籍Uganda。


上一篇:語法約定

相關文章
相關標籤/搜索