MySQL資料庫學習筆記(一)

來源:互聯網
上載者:User
mysql|筆記|資料|資料庫
        我一直從事Informix和Oracle資料庫開發,有一天發現網路上有一種小巧別緻的資料庫,被廣泛使用,從MySQL的網站http://www.mysql.com/我下載了它的資料庫軟體,使用過後覺得真的挺好,這是我的一點學習筆記希望對各位初學者有點協助。


1.       MySQL資料庫介紹

MySQL 是瑞典的MySQL AB公司開發的一個可用於各種流行作業系統平台的關聯式資料庫系統,它具有客戶機/伺服器體繫結構的分散式資料庫管理系統。MySQL 完全適用於網路,用其建造的資料庫可在網際網路上的任何地方訪問,因此,可以和網路上任何地方的任何人共用資料庫。MySQL具有功能強、使用簡單、管理方便、運行速度快、可靠性高、安全保密性強等優點。MySQL用C和C++編寫,它可以工作在許多平台(Unix,Linux,Windows)上,提供了針對不同程式設計語言(C,C++,JAVA等)的API函數;使用核心線程實現多線程,能夠很好的支援多CPU;提供事務和非事務的儲存機制;快速的基於線程的記憶體配置系統;MySQL採用雙重許可,使用者可以在GNU授權條款下以免費軟體或開放源碼軟體的方式使用MySQL軟體,也可以從MySQL AB公司獲得正式的商業許可。

除了以上特點,MySQL 還有一個最大的特點,那就是在諸如 UNIX 這樣的作業系統上,它是免費的,可從網際網路上下載其伺服器和客戶機軟體。並且還能從網際網路上得到許多與其相配的第三方軟體或工具。而在 Windows 系統上,其客戶機程式和客戶機程式庫是免費的。

1.1.       為什麼選用 MySQL

如果您正在尋找一種免費的或不昂貴的資料庫管理系統,可以有幾個選擇,如,MySQL、mSQL、Postgres(一種免費的但不支援來自商業供應商引擎的系統)等。在將 MySQL 與其他資料庫系統進行比較時,所要考慮的最重要的因素是效能、支援、特性(與 SQL 的一致性、擴充等等)、認證條件和約束條件、價格等。相比之下,MySQL 具有許多吸引人之處:

1.         速度。MySQL 運行速度很快。開發人員聲稱 MySQL 可能是目前能得到的最快的資料庫。可訪問 http://www.mysql.com/benchmark.html (MySQL Web 網站上的效能比較頁),調查一下這個效能。

2.         容易使用。MySQL 是一個高效能且相對簡單的資料庫系統,與一些更大系統的設定和管理相比,其複雜程度較低。

3.         價格。MySQL 對多數個人使用者來說是免費的。

4.         小巧。4.1.1的資料庫發行版僅僅只有21M,安裝完成也僅僅51M。

5.         支援查詢語言。MySQL 可以利用 SQL(結構化查詢語言 (SQL)),SQL 是一種所有現代資料庫系統都選用的語言。也可以利用支援 ODBC(開放式資料庫連接)的應用程式,ODBC 是 Microsoft 開發的一種資料庫通訊協定。

6.         效能。許多客戶機可同時串連到伺服器。MySQL資料庫沒有使用者數的限制,多個客戶機可同時使用同一個資料庫。可利用幾個輸入查詢並查看結果的介面來互動式地訪問 MySQL。這些介面為:命令列客戶機程式、網頁瀏覽器或 X Window System 客戶機程式。此外,還有由各種語言(如C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl)編寫的介面。因此,可以選擇使用已編好的客戶機程式或編寫自己的客戶機應用程式。

7.         串連性和安全性。MySQL 是完全網路化的,其資料庫可在網際網路上的任何地方訪問,因此,可以和任何地方的任何人共用資料庫。而且 MySQL 還能進行存取控制,可以控制哪些人不能看到您的資料。

8.         可移植性。MySQL 可運行在各種版本的 UNIX 以及其他非 UNIX 的系統(如 Windows 和 OS/2)上。MySQL 可運行在從家用 PC 到進階的伺服器上。

9.         開放式的分發。MySQL 容易獲得;只要使用 網頁瀏覽器即可。如果不能理解某樣東西是如何起作用的,或者對某個演算法感到好奇,可以將其原始碼取來,對原始碼進行分析。如果不喜歡某些東西,則可以更改它。

1.2.       MySQL 提供的工具

MySQL 包含有下列工具:

1.         SQL 伺服器。這是 MySQL 的引擎,它提供對資料庫的訪問。

2.          訪問伺服器的客戶機程式。包括一個允許直接錄入查詢並查看結果的互動式程式,以及幾個協助操縱網站的管理程式和公用程式。其中有一個公用程式允許控制伺服器。其他的公用程式匯入或匯出資料,檢查訪問許可等。

3.          協助使用者編寫自己的程式的客戶機庫。MySQL提供眾多的API ( C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl)

4.         MySQL 除了提供內嵌軟體外,它還被許多很有才能的人使用。這些人喜歡編寫軟體以提高其產品效率,或願意將自己編寫的軟體提供給他人使用。因此,使用 MySQL能得到各種各樣的第三方工具,這些工具令 MySQL使用更方便,或者擴充了 MySQL,使其進入諸如 Web 網站開發這樣的領域。

1.3.       MySQL 是否免費

MySQL 不是一種開放的原始碼產品,但一般可以免費使用。可以參考“MySQL 參考指南”的許可說明,其基本內容如下:

1.          客戶機程式和客戶機編程庫在所有平台上都是免費的。

2.          在 UNIX 和其他非 Windows 平台上,MySQL 伺服器可免費使用,但不能出售它或出售需要它的任何軟體或服務。如果這樣做,應該得到伺服器的使用許可證。理由是,如果用 MySQL 賺錢,那麼應當分一些給MySQL 的開發人員($495 對有助於您賺錢的專業的 RDBMS 來說是很便宜的,並且還有大量的免費軟體,可用來協助您更有效地使用 MySQL。)

3.          MySQL 伺服器的 Windows 版本需要許可證。目前MySQL Pro在網上的報價(注意MySQL Pro是MySQL的商業版本):

http://www.mysql.com/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@mysql.com

 

4.          MySQL 的較舊的版本通過 GNU Public License(GPL)許可證可以得到,並可用於任何用途而無需付費。MySQL 3.20.32a 在 GPL 條件下可用。

5.         無論是否需要伺服器許可證,都可在付費的基礎上從 MySQL 開發人員那裡得到正式的支援人員,本人提請讀者注意這一點。(特別是如果您的公司主管不贊成使用沒有如此保證的軟體時更是如此。)MySQL提供多種層級的支援人員,除了得到極好的支援外,您還能協助MySQL的開發,進而使整個MySQL世界受益。

6.         關於 Windows 許可證的說明

有時候有人會問,“我使用的是 Windows,為什麼必須取得 MySQL 伺服器的許可證呢?”這是一個很合理的問題,而且也存在一個合理的答案,那就是軟體開發的費用。為了從事軟體開發,需要一個作業系統和一些開發工具,如編輯器和編譯器等。就這些需求而言,在 UNIX 的開發與 Windows 的開發之間存在根本的不同。在 UNIX 下,可免費得到幾乎所有東西:

a)         使用的作業系統有幾個選擇,如 Linux 或免費的 BSD 系列,譬如 FreeBSD、NetBSD 和 OpenBSD。

b)        使用的開發工具,這些作業系統全都帶有編輯器,如 vi 和編輯程式巨集指令及 gcc 和 egcs 這樣的編譯器。

c)        在升級這些作業系統或發布開發工具時,可從網際網路上下載它們或從一個便宜的 CD 上得到,即使是進行重大的修改也是這樣。

而在 Windows 上開發軟體卻相當昂貴,例如:

a)         作業系統不是免費的。

b)        開發工具,如編譯器不是免費的。

c)        作業系統或工具的升級時,除非是小問題的修改或作微小的升級,否則要再次付費。所有這些表明,UNIX 下的軟體開發成本幾乎是零,而在 Windows 其成本相當可觀。MySQL 的開發人員可能願意繼續研究 MySQL,但他們不希望為這種權利付那麼多錢。不管怎麼說,其 Windows 的開發成本必須收回,發售MySQL 許可證就是一種手段。

1.4.       目前版本

可以在網上下載的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語句的預先處理prepare方法,所以本報告測試主要針對4.1版本進行。

2.     功能詳述

2.1.表大小和記錄數

對於表的大小MySQL沒有內部限制,僅僅受限於作業系統對錶檔案大小的限制,目前在Linux-Intel 32 bit上表最大為2GB,在Solaris 2.7上是512GB。實際應用中MySQL資料庫處理擁有60000個表和五十億條記錄的資料庫系統,表記錄可以達到五百萬條。

目前我們的OMCR資料庫表只有134個,資料庫記錄還沒有上百萬的。

2.2.索引

支援每個表32個索引,每個索引可以包含1-16個欄位,最大欄位長度為500個位元組。

2.3.串連

支援TCP/IP的sock串連,這樣便於跨平台的資料庫連接,同時還支援Windows下的具名管道串連、ODBC串連。同時MySQL伺服器端對於接入使用者數沒有任何限制。

2.4.字元集

支援ISO-8859-1 (Latin1), german, big5, ujis字元集,我們目前採用的是ISO-8859-1字元集,

2.5.資料類型

MySQL支援的可用於表的欄位類型定義的資料類型有: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可以分三種類型:數實值型別,日期和時間類型,字元類型我們目前主要使用DECIMAL、VARCHAR2、DATE、TEXT和BLOB資料類型這些類型已經遠遠滿足我們的需要,類型說明如下:

1.         DECIMAL[(顯示長度[,小數位元])] [UNSIGNED] [ZEROFILL]
以字串的形式儲存的浮點數,所以的位元組數由顯示長度節點。它的最大可能是DOUBLE。如果沒有指定顯示長度則預設為10;如果沒有指定小數位元,則預設為0。

2.         [NATIONAL] VARCHAR(M) [BINARY]
變長字串。字串長度的大小為0到255。它對大小寫不敏感,除非它為BINARY的。在MySQL4.1.0版本後,長度可以超過255,如果長度超過了255,將被轉換成TEXT類型。

3.         BLOB或者TEXT
BLOB用來儲存二進位對象,TEXT用來儲存文本值。BLOB與TXT類型基本相同,不同的是在做比較時TXT對大小寫不敏感,BLOB對大小寫敏感。在大多數情況下可以將TXT看作是對VARCHAR的擴充,它的最大長度更大,不同的是在儲存時TXT不會自動將結尾的空格去掉,而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個位元組。支援的範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59',MySQL以'YYYY-MM-DD HH:MM:SS'格式顯示它的值,但允許以字串或者數位形式給它賦值。

5.         TIMESTAMP[(顯示長度)]
4個位元組。支援的範圍是‘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資料庫部分支援ANSI SQL_99文法,我們主要使用CREATE TABLE,INSERT,DELETE,UPDATE,SELECT操作在這方面是支援的。但是由於目前MySQL不支援儲存過程、觸發器和視圖,這樣我們的一些資料庫服務需要編程實現。

2.7.       應用介面API

為了方便應用程式的開發,MySQL 提供了用Perl、PHP、Java、Python、C++、Tcl 程式設計語言編寫的客戶機庫,它允許從任何程式的內部訪問 MySQL 資料庫。客戶機庫實現API(API),API 定義客戶機程式如何建立和執行與伺服器的通訊。我們的OMCR主要採用C、C++和JAVA編程,因此從編程介面上看MySQL已經滿足我們的需求。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.