MySQL數(shù)據(jù)庫介紹1. MySQL數(shù)據(jù)庫介紹MySQL 是瑞典的MySQL AB公司開發(fā)的一個可用于各種流行操作系統(tǒng)平臺的關(guān)系數(shù)據(jù)庫系統(tǒng),它具有客戶機/服務(wù)器體系結(jié)構(gòu)的分布式數(shù)據(jù)庫管理系統(tǒng),。MySQL 完全適用于網(wǎng)絡(luò),,用其建造的數(shù)據(jù)庫可在因特網(wǎng)上的任何地方訪問,因此,,可以和網(wǎng)絡(luò)上任何地方的任何人共享數(shù)據(jù)庫。MySQL具有功能強,、使用簡單,、管理方 便、運行速度快,、可靠性高,、安全保密性強等優(yōu)點。MySQL用C和C++編寫,,它可以工作在許多平臺(Unix,,Linux,Windows)上,,提供了 針對不同編程語言(C,C++,JAVA等)的API函數(shù),;使用核心線程實現(xiàn)多線程,能夠很好的支持多CPU,;提供事務(wù)和非事務(wù)的存儲機制,;快速的基于線 程的內(nèi)存分配系統(tǒng);MySQL采用雙重許可,,用戶可以在GNU許可條款下以免費軟件或開放源碼軟件的方式使用MySQL軟件,,也可以從MySQL AB公司獲得正式的商業(yè)許可,。 除了以上特點,MySQL 還有一個最大的特點,,那就是在諸如 UNIX 這樣的操作系統(tǒng)上,,它是免費的,可從因特網(wǎng)上下載其服務(wù)器和客戶機軟件,。并且還能從因特網(wǎng)上得到許多與其相配的第三方軟件或工具,。而在 Windows 系統(tǒng)上,其客戶機程序和客戶機程序庫是免費的,。 1.1. 為什么選用 MySQL 如果您正在尋找一種免費的 或不昂貴的數(shù)據(jù)庫管理系統(tǒng),,可以有幾個選擇,如,,MySQL,、mSQL、Postgres(一種免費的但不支持來自商業(yè)供應(yīng)商引擎的系統(tǒng))等,。在將 MySQL 與其他數(shù)據(jù)庫系統(tǒng)進行比較時,,所要考慮的最重要的因素是性能、支持,、特性(與 SQL 的一致性,、擴展等等)、認證條件和約束條件,、價格等。相比之下,,MySQL 具有許多吸引人之處: 1. 速度,。MySQL 運行速度很快。開發(fā)者聲稱 MySQL 可能是目前能得到的最快的數(shù)據(jù)庫,??稍L問 http://www./benchmark.html (MySQL Web 站點上的性能比較頁),調(diào)查一下這個性能,。 2. 容易使用,。MySQL 是一個高性能且相對簡單的數(shù)據(jù)庫系統(tǒng),與一些更大系統(tǒng)的設(shè)置和管理相比,,其復(fù)雜程度較低,。 3. 價格。MySQL 對多數(shù)個人用戶來說是免費的,。 4. 小巧,。4.1.1的數(shù)據(jù)庫發(fā)行版僅僅只有21M,安裝完成也僅僅51M,。 5. 支持查詢語言,。MySQL 可以利用 SQL(結(jié)構(gòu)化查詢語言),,SQL 是一種所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)都選用的語言。也可以利用支持 ODBC(開放式數(shù)據(jù)庫連接)的應(yīng)用程序,,ODBC 是 Microsoft 開發(fā)的一種數(shù)據(jù)庫通信協(xié)議,。 6. 性能。許多客戶機可同時連接到服務(wù)器,。MySQL數(shù)據(jù)庫沒有用戶數(shù)的限制,,多個客戶機可同時使用同一個數(shù)據(jù)庫??衫脦讉€輸入查詢并查看結(jié)果的界面來交互 式地訪問 MySQL,。這些界面為:命令行客戶機程序、Web 瀏覽器或 X Window System 客戶機程序,。此外,,還有由各種語言(如C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl)編寫的界面。因此,,可以選擇使用已編好的客戶機程序或編寫自己的客戶機應(yīng)用程序,。 7. 連接性和安全性。MySQL 是完全網(wǎng)絡(luò)化的,,其數(shù)據(jù)庫可在因特網(wǎng)上的任何地方訪問,,因此,可以和任何地方的任何人共享數(shù)據(jù)庫,。而且 MySQL 還能進行訪問控制,,可以控制哪些人不能看到您的數(shù)據(jù)。 8. 可移植性,。MySQL 可運行在各種版本的 UNIX 以及其他非 UNIX 的系統(tǒng)(如 Windows 和 OS/2)上,。MySQL 可運行在從家用 PC 到高級的服務(wù)器上。 9. 開放式的分發(fā),。MySQL 容易獲得,;只要使用 Web 瀏覽器即可。如果不能理解某樣?xùn)|西是如何起作用的,,或者對某個算法感到好奇,,可以將其源代碼取來,對源代碼進行分析,。如果不喜歡某些東西,,則可以更改它。 1.2. MySQL 提供的工具 MySQL 包含有下列工具: 1. SQL 服務(wù)器,。這是 MySQL 的引擎,,它提供對數(shù)據(jù)庫的訪問。 2. 訪問服務(wù)器的客戶機程序,。包括一個允許直接錄入查詢并查看結(jié)果的交互式程序,,以及幾個幫助操縱站點的管理程序和實用程序,。其中有一個實用程序允許控制服務(wù)器。其他的實用程序?qū)牖驅(qū)С鰯?shù)據(jù),,檢查訪問許可等,。 3. 幫助用戶編寫自己的程序的客戶機庫。MySQL提供眾多的API ( C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl) 4. MySQL 除了提供內(nèi)嵌軟件外,,它還被許多很有才能的人使用,。這些人喜歡編寫軟件以提高其產(chǎn)品效率,或愿意將自己編寫的軟件提供給他人使用,。因此,,使用 MySQL能得到各種各樣的第三方工具,這些工具令 MySQL使用更方便,,或者擴展了 MySQL,,使其進入諸如 Web 站點開發(fā)這樣的領(lǐng)域。 1.3. MySQL 是否免費 MySQL 不是一種開放的源代碼產(chǎn)品,,但一般可以免費使用,。可以參考“MySQL 參考指南”的許可說明,,其基本內(nèi)容如下: 1. 客戶機程序和客戶機編程庫在所有平臺上都是免費的,。 2. 在 UNIX 和其他非 Windows 平臺上,MySQL 服務(wù)器可免費使用,,但不能出售它或出售需要它的任何軟件或服務(wù),。如果這樣做,應(yīng)該得到服務(wù)器的使用許可證,。理由是,,如果用 MySQL 賺錢,那么應(yīng)當分一些給MySQL 的開發(fā)者($495 對有助于您賺錢的專業(yè)的 RDBMS 來說是很便宜的,,并且還有大量的免費軟件,可用來幫助您更有效地使用 MySQL,。) 3. MySQL 服務(wù)器的 Windows 版本需要許可證,。目前MySQL Pro在網(wǎng)上的報價(注意MySQL Pro是MySQL的商業(yè)版本): http://www./products/pricing.html MySQL Pro includes the InnoDB transactional storage engine, which provides row-level locking. Number of licenses Price per copy EUR USD GBP 1 .. 9 440.00 495.00 290.00 10 .. 49 315.00 360.00 205.00 50 .. 99 255.00 290.00 165.00 100 .. 249 195.00 220.00 127.00 250 .. 499 155.00 175.00 100.00 500 + ask for quote, sales@ 4. MySQL 的較舊的版本通過 GNU Public License(GPL)許可證可以得到,并可用于任何用途而無需付費,。MySQL 3.20.32a 在 GPL 條件下可用,。 5. 無論是否需要服務(wù)器許可證,都可在付費的基礎(chǔ)上從 MySQL 開發(fā)者那里得到正式的技術(shù)支持,,本人提請讀者注意這一點,。(特別是如果您的公司主管不贊成使用沒有如此保證的軟件時更是如此。)MySQL提供多種級別的 技術(shù)支持,,除了得到極好的支持外,,您還能幫助MySQL的開發(fā),,進而使整個MySQL世界受益。 6. 關(guān)于 Windows 許可證的說明 有 時候有人會問,,“我使用的是 Windows,,為什么必須取得 MySQL 服務(wù)器的許可證呢?”這是一個很合理的問題,,而且也存在一個合理的答案,,那就是軟件開發(fā)的費用。為了從事軟件開發(fā),,需要一個操作系統(tǒng)和一些開發(fā)工具,,如編 輯器和編譯器等。就這些需求而言,,在 UNIX 的開發(fā)與 Windows 的開發(fā)之間存在根本的不同,。在 UNIX 下,可免費得到幾乎所有東西: a) 使用的操作系統(tǒng)有幾個選擇,,如 Linux 或免費的 BSD 系列,,譬如 FreeBSD、NetBSD 和 OpenBSD,。 b) 使用的開發(fā)工具,,這些操作系統(tǒng)全都帶有編輯器,如 vi 和編輯程序宏指令及 gcc 和 egcs 這樣的編譯器,。 c) 在升級這些操作系統(tǒng)或發(fā)布開發(fā)工具時,,可從因特網(wǎng)上下載它們或從一個便宜的 CD 上得到,即使是進行重大的修改也是這樣,。 而在 Windows 上開發(fā)軟件卻相當昂貴,,例如: a) 操作系統(tǒng)不是免費的。 b) 開發(fā)工具,,如編譯器不是免費的,。 c) 操作系統(tǒng)或工具的升級時,除非是小問題的修改或作微小的升級,,否則要再次付費,。所有這些表明,UNIX 下的軟件開發(fā)成本幾乎是零,,而在 Windows 其成本相當可觀,。MySQL 的開發(fā)者可能愿意繼續(xù)研究 MySQL,但他們不希望為這種權(quán)利付那么多錢,。不管怎么說,,其 Windows 的開發(fā)成本必須收回,發(fā)售MySQL 許可證就是一種手段,。 1.4. 目前版本 可以在網(wǎng)上下載的MySQL版本如下: MySQL 4.0 -- Production release (recommended) MySQL 4.1 -- Alpha release (use this for new development) MySQL 5.0 -- Development tree (use this for previewing and testing new features) MySQL 3.23 -- Older production release 各版本的主要特性: Feature MySQL version Unions 4.0 Subqueries 4.1 R-trees 4.1 (for MyISAM tables) Stored procedures 5.0 Views 5.0 or 5.1 Cursors 5.0 Foreign keys 5.1 (already implemented in 3.23 for InnoDB) Triggers 5.1 Full outer join 5.1 Constraints 5.1 4.1版本MySQL支持子查詢和SQL語句的預(yù)處理prepare方法,,所以本報告測試主要針對4.1版本進行,。 2. 功能詳述 2.1.表大小和記錄數(shù) 對 于表的大小MySQL沒有內(nèi)部限制,僅僅受限于操作系統(tǒng)對表文件大小的限制,,目前在Linux-Intel 32 bit上表最大為2GB,,在Solaris 2.7上是512GB。實際應(yīng)用中MySQL數(shù)據(jù)庫處理擁有60000個表和五十億條記錄的數(shù)據(jù)庫系統(tǒng),,表記錄可以達到五百萬條,。 目前我們的OMCR數(shù)據(jù)庫表只有134個,數(shù)據(jù)庫記錄還沒有上百萬的,。 2.2.索引 支持每個表32個索引,,每個索引可以包含1-16個字段,最大字段長度為500個字節(jié),。 2.3.連接 支持TCP/IP的sock連接,,這樣便于跨平臺的數(shù)據(jù)庫連接,同時還支持Windows下的命名管道連接,、ODBC連接,。同時MySQL服務(wù)器端對于接入用戶數(shù)沒有任何限制。 2.4.字符集 支持ISO-8859-1 (Latin1), german, big5, ujis字符集,,我們目前采用的是ISO-8859-1字符集,, 2.5.數(shù)據(jù)類型 MySQL 支持的可用于表的字段類型定義的數(shù)據(jù)類型有:signed/unsigned integers 1, 2, 3, 4, and 8 bytes long, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, and ENUM types可以分三種類型:數(shù)值類型,日期和時間類型,,字符類型我們目前主要使用DECIMAL,、VARCHAR2、DATE,、TEXT和BLOB數(shù)據(jù)類 型這些類型已經(jīng)遠遠滿足我們的需要,,類型說明如下: 1. DECIMAL[(顯示長度[,小數(shù)位數(shù)])] [UNSIGNED] [ZEROFILL] 以字符串的形式存儲的浮點數(shù),所以的字節(jié)數(shù)由顯示長度節(jié)點,。它的最大可能是DOUBLE,。如果沒有指定顯示長度則缺省為10;如果沒有指定小數(shù)位數(shù),,則缺省為0,。 2. [NATIONAL] VARCHAR(M) [BINARY] 變長字符串。字符串長度的大小為0到255,。它對大小寫不敏感,除非它為BINARY的,。在MySQL4.1.0版本后,,長度可以超過255,如果長度超過了255,,將被轉(zhuǎn)換成TEXT類型,。 3. BLOB或者TEXT BLOB 用來存儲二進制對象,,TEXT用來存儲文本值。BLOB與TXT類型基本相同,,不同的是在做比較時TXT對大小寫不敏感,,BLOB對大小寫敏感。在大多數(shù) 情況下可以將TXT看作是對VARCHAR的擴展,,它的最大長度更大,,不同的是在存儲時TXT不會自動將結(jié)尾的空格去掉,而VARCHAR會,。BLOB可 看作是對VARCHAR BINARY的擴展,。BLOB和TXT的列不能有缺省值。 BLOB有四種:TINYBLOB—最大長度為255(2^8-1),;BLOB—最大長度為65535(2^16-1),;MEDIUMBLOB—最大長度為16777215(2^24-1);LONGBLOB—最大長度為4294967295或者4G(2^32-1),。 TXT也有四種:TINYTXT—最大長度為255,;TXT—最大長度為65535;MEDIUMTXT—最大長度為16777215(2^24-1),;LONGTXT—最大長度為4294967295或者4G(2^32-1),。 4. DATETIME 日期和時間,8個字節(jié),。支持的范圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59',,MySQL以'YYYY-MM-DD HH:MM:SS'格式顯示它的值,但允許以字符串或者數(shù)字的形式給它賦值,。 5. TIMESTAMP[(顯示長度)] 4 個字節(jié),。支持的范圍是‘1970-01-01 00:00:00’到2037年12月31日子夜之間某時刻的簡單表示形式。在MySQL4.0及更早的版本中,,它的顯示格式為 YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, 或者YYMMDD,,這要依賴顯示長度的取值。從MySQL4.1版本后,,改為'YYYY-MM-DD HH:MM:SS'格式,。它的主要用途是保持對表更新的記錄,當向表insert或update記錄時,,如果沒有提供TIMESTAMP列的值,,則它將被 置為進行該操作時的時間,如果提供TIMESTAMP列的值為NULL, 則它將被自動置為當前時間,。 2.6. SQL語句 MySQL數(shù)據(jù)庫部分支持ANSI SQL_99語法,,我們主要使用CREATE TABLE,INSERT,DELETE,UPDATE,SELECT操作在這方面是支持的。但是由于目前MySQL不支持儲存過程、觸發(fā)器和視圖,,這樣我們的一些數(shù)據(jù)庫服務(wù)需要編程實現(xiàn),。 2.7. 應(yīng)用接口API 為 了方便應(yīng)用程序的開發(fā),MySQL 提供了用Perl,、PHP,、Java、Python,、C++,、Tcl 編程語言編寫的客戶機庫,它允許從任何程序的內(nèi)部訪問 MySQL 數(shù)據(jù)庫,??蛻魴C庫實現(xiàn)應(yīng)用程序編程接口(API),API 定義客戶機程序如何建立和執(zhí)行與服務(wù)器的通信,。我們的OMCR主要采用C,、C++和JAVA編程,因此從編程接口上看MySQL已經(jīng)滿足我們的需求,。 |
|