MySQL中文參考手冊2(MySQL 的一般信息)iTbulo.comeo1ti
轉載 翻譯:晏子譯者:晏子 ([email protected])主頁:http://linuxdb.yeah.net
1 MySQL 的一般信息
這是MySQL參考手冊;它記載了MySQL版本3.23.7-alpha。
MySQL 是一個快速、多線程、多用戶和強壯的SQL數據庫服務器。
對Unix和 OS/2 平台,MySQL基本上是免費的;但對微軟平台,你在30 天的試用期後必須獲得一個MySQL 許可證。詳見第三節 MySQL許可證和技術支持。
MySQL 主頁提供有關MySQL的最新信息。
對於MySQL能力的討論,詳見1.4 MySQL 的主要特征。
對於安裝指南,見4 安裝 MySQL。對於有關移植MySQL到新機器或操作系統的技巧,參見G 對移植到其他系統的說明。
有關從 3.21 版升級的信息,詳見4.16.2 從一個 3.21 版本升級到 3.22 。
MySQL的入門教程,見8 MySQL 教程。
SQL和基准信息的例子,見基准目錄(在分發中的'sql-bench'目錄)。
對於新特征和錯誤修復一個歷史記錄,見D MySQL的變遷。
對於當前已知錯誤和功能缺陷的一張列表,見E MySQL已知錯誤和設計缺陷。
未來計劃,見F 我們想要在未來加入到MySQL 的計劃表( TODO )。
這個計劃的所有貢獻者的名單,見C MySQL 的貢獻者。
重要:
將臭蟲(錯誤)報告、問提和建議發到郵件列表(原文未提供)。
對源代碼分發,mysqlbug 腳本可在‘scripts’目錄下找到。 對二進制的分發,mysqlbug可在‘bin’目錄下找到。
如果你有任何關於這本手冊的增補或修正的任何建議,請將它們發給手冊小組([email protected] )。
1.1 什麼是 MySQL?
MySQL是一個真正的多用戶、多線程SQL數據庫服務器。SQL(結構化查詢語言)是世界上最流行的和標准化的數據庫語言。MySQL是以一個客戶機/服務器結構的實現,它由一個服務器守護程序mysqld和很多不同的客戶程序和庫組成。
SQL是一種標准化的語言,它使得存儲、更新和存取信息更容易。例如,你能用SQL語言為一個網站檢索產品信息及存儲顧客信息,同時MySQL也足夠快和靈活以允許你存儲記錄文件和圖像。
MySQL 主要目標是快速、健壯和易用。最初是因為我們需要這樣一個SQL服務器,它能處理與任何可不昂貴硬件平台上提供數據庫的廠家在一個數量級上的大型數據庫,但速度更快,MySQL就開發出來。自1996年以來,我們一直都在使用MySQL,其環境有超過 40 個數據庫,包含 10,000個表,其中500多個表超過7百萬行,這大約有100 個吉字節(GB)的關鍵應用數據。
MySQL建立的基礎是業已用在高要求的生產環境多年的一套實用例程。盡管MySQL仍在開發中,但它已經提供一個豐富和極其有用的功能集。
MySQL的官方發音是“My Ess Que Ell”(不是 MY-SEQUEL )。
1.2 關於本手冊
目前這本手冊有Texinfo、普通文本、Info、HTML、PostScript和 PDF 等格式的版本。因為它們的長度,PostScript和 PDF 版本沒有包括在主要的MySQL分發中,但是可從http://www.mysql.com 獲得單獨的下載。
主要的文檔是Texinfo文件, HTML版本自動地用一個texi2html改進版本生成。普通文本和Info版本用makeinfo生成。 Postscript版本由texi2dvi和dvips生成。PDF 版本用pdftex生成。
本手冊由David Axmark, Michael (Monty) Widenius, Paul DuBois and Kim Aldale維護。 而其他的貢獻者,見C MySQL貢獻者。
1.2.1 本手冊中使用的約定
這本手冊使用了一定文字格式的約定:
constant / 固定寬度
固定寬度字體用於命令名字和選擇、SQL語句、數據庫、表和列命名、C 和 Perl 代碼、環境變量。例如:“為了了解mysqladmin如何工作,用--help選項調用它”。
'文件名'
有包圍引號的固定寬度字體用於文件名和路徑。例如:“發行版本被安裝在'/usr/local/'目錄下”。
'c'
有包圍引號的固定寬度字體也用於指明字符序列。例如:“要指定一個通配符,使用'%'字符”。
<em>斜體</em>
斜體的字體被用於強調,like this 。
粗體
粗體用於存取權限名字(例如,“不要輕易授權process權限”)並表達特別強調。
當命令顯示出准備由一個特定的程序執行時,程序由命令所顯示的提示符指出。例如,shell> 表明你從你的登錄外殼執行一個命令,而mysql>表明你從mysql客戶執行命令:
shell> 在這鍵入一個shell命令
mysql> 在這裡鍵入一個mysql命令
shell命令用 Bourne shell語法顯示。如果你正在使用csh風格的外殼,你可能需要用略微不同的方式發出命令。例如,設置一個環境變量和運行一個命令的序列在 Bourne shell語法看起來像這樣:
shell> VARNAME=value some_command
對於csh,你將執行這樣的序列:
shell> setenv VARNAME value
shell> some_command
數據庫、表和列名字經常必須被代入命令中。為表明這種代入是必要的,本手冊使用db_name、tbl_name和col_name。例如,你可能看到象這樣的語句:
mysql> SELECT col_name FROM db_name.tbl_name;
這意味著如果你想輸入類似的語句,你將提供你自己數據庫、表和列的名字,也許像這樣:
mysql> SELECT author_name FROM biblio_db.author_list;
SQL語句可以寫成大寫或小寫的。當本手冊顯示SQL語句時,如果討論這些關鍵字,大寫被用於特定的關鍵字(強調它們)而小寫被用於語句的其他部分。因此你可能在討論SELECT語句時看到如下顯示:
mysql> SELECT count(*) FROM tbl_name;
另一方面,在討論COUNT()函數時,語句將寫成這樣:
mysql> select COUNT(*) from tbl_name;
如果不有意地特別強調,所有的關鍵字一律寫成大寫。
在句法描述中,方括號('['和']')被用來表示任選的詞或子句:
DROP TABLE [IF EXISTS] tbl_name
當一個語法元素由很多選擇組成時,各選擇用垂直線分開('|')。當可能從一組選擇中選擇一個成員時,選擇在方括號內被列出。當必須從一組選擇中選擇一個成員時,選擇在花括號內被列出('{'和'}'):
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
{DESCRIBE | DESC} tbl_name {col_name | wild}
1.3 MySQL 的歷史
我們曾經開始打算利用mSQL用我們自己的快速底層(ISAM)實用程序連接我們的數據庫表,然而,在一些測試以後我們得到出結論:mSQL對我們的需求來說不夠快速和靈活。這導致了一個連接我們數據庫的新SQL接口,但它幾乎有與mSQL相同的應用編程接口。選擇這個應用編程接口以方便第三方的代碼移植。
MySQL名字的由來不是非常清楚。我們的基目錄和很多的庫和工具具有前綴“my”已超過10年歷史,然而,Monty的女兒(年輕幾歲的)也被命名"my"。因此其中哪一個原因給MySQL起了這個名字仍然是一個謎,甚至對我們。
1.4 MySQL 的主要特征
下表描述MySQL一些重要的特征:
使用核心線程的完全多線程。這意味著它能很容易地利用多CPU(如果有)。
C 、C++、 Eiffel 、 Java、 Perl、 PHP、Python、和 TCL API。見20 MySQL 客戶工具和 API。
可運行在不同的平台上,見4.2 MySQL支持的操作系統。
多種列類型:1、 2、 3、4、和 8 字節長度的有符號/無符號整數、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM類型。 見7.3 列類型。
利用一個優化的一遍掃描多重聯結(one-sweep multi-join)非常快速地進行聯結(join)。
在查詢的SELECT和WHERE部分支持全部運算符和函數,例如:
mysql> SELECT CONCAT(first_name, " ", last_name) FROM tbl_name
WHERE income/dependents > 10000 AND age > 30;
通過一個高度優化的類庫實現SQL函數庫並且像他們能達到的一樣快速,通常在查詢初始化後不應該有任何內存分配。
全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數( COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、 MAX()和MIN() )。
支持ANSI SQL的LEFT OUTER JOIN和ODBC語法。
你可以在同一查詢中混用來自不同數據庫的表。(與版本 3.22一樣 )。
一個非常靈活且安全的權限和口令系統,並且它允許基於主機的認證。口