明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

MySQL數(shù)據(jù)庫基礎(chǔ)圖文說明教程

[摘要]數(shù)據(jù)庫從最初的數(shù)據(jù)文件的簡單集合發(fā)展到今天的大型數(shù)據(jù)庫管理系統(tǒng)已經(jīng)成為我們?nèi)粘I钪胁豢扇鄙俚慕M成部分。如果不借助數(shù)據(jù)庫的幫助,許多簡單的工作將變得冗長乏味,甚至難以實(shí)現(xiàn)。尤其是象銀行、院校和圖書館這樣的大型組織更加依靠數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)其正常的運(yùn)作。再看互聯(lián)網(wǎng)上,從搜索引擎到在線商場(chǎng),從網(wǎng)上聊天到郵...
數(shù)據(jù)庫從最初的數(shù)據(jù)文件的簡單集合發(fā)展到今天的大型數(shù)據(jù)庫管理系統(tǒng)已經(jīng)成為我們?nèi)粘I钪胁豢扇鄙俚慕M成部分。如果不借助數(shù)據(jù)庫的幫助,許多簡單的工作將變得冗長乏味,甚至難以實(shí)現(xiàn)。尤其是象銀行、院校和圖書館這樣的大型組織更加依靠數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)其正常的運(yùn)作。再看互聯(lián)網(wǎng)上,從搜索引擎到在線商場(chǎng),從網(wǎng)上聊天到郵件列表,都離不開數(shù)據(jù)庫。

  目前,市面上的數(shù)據(jù)庫產(chǎn)品多種多樣,從大型企業(yè)的解決方案到中小企業(yè)或個(gè)人用戶的小型應(yīng)用系統(tǒng),可以滿足用戶的多樣化需求。這里,我們所要向大家介紹的MySQL數(shù)據(jù)庫是眾多的關(guān)系型數(shù)據(jù)庫產(chǎn)品中的一個(gè),相比較其它系統(tǒng)而言,MySQL數(shù)據(jù)庫可以稱得上是目前運(yùn)行速度最快的SQL語言數(shù)據(jù)庫。除了具有許多其它數(shù)據(jù)庫所不具備的功能和選擇之外,MySQL數(shù)據(jù)庫是一種完全免費(fèi)的產(chǎn)品,用戶可以直接從網(wǎng)上下載數(shù)據(jù)庫,用于個(gè)人或商業(yè)用途,而不必支付任何費(fèi)用(推薦下載站點(diǎn)http://www.mysql.com)。

  總體來說,MySQL數(shù)據(jù)庫具有以下主要特點(diǎn):

1. 同時(shí)訪問數(shù)據(jù)庫的用戶數(shù)量不受限制;

2. 可以保存超過50,000,000條記錄;

3. 是目前市場(chǎng)上現(xiàn)有產(chǎn)品中運(yùn)行速度最快的數(shù)據(jù)庫系統(tǒng);

4. 用戶權(quán)限設(shè)置簡單、有效。

  如今,包括Siemens和Silicon Graphics這樣的國際知名公司也開始把MySQL作為其數(shù)據(jù)庫管理系統(tǒng),這就更加證明了MySQL數(shù)據(jù)庫的優(yōu)越性能和廣闊的市場(chǎng)發(fā)展前景。

  本文將重點(diǎn)向讀者介紹MySQL數(shù)據(jù)庫的一些基本操作,包括如何與數(shù)據(jù)庫建立連接,如果設(shè)置數(shù)據(jù)庫,以及如何執(zhí)行基本的命令等。希望能夠?qū)ψx者學(xué)習(xí)和掌握MySQL數(shù)據(jù)庫有所助益。

入門

  一般來說,我們?cè)L問MySQL數(shù)據(jù)庫時(shí),首先需要使用telnet遠(yuǎn)程登錄安裝數(shù)據(jù)庫系統(tǒng)的服務(wù)器,然后再進(jìn)入MySQL數(shù)據(jù)庫。MySQL數(shù)據(jù)庫的連接命令如下:

mysql -h hostname -u username -p[password]

或者:

mysql -h hostname -u username --password=password

  其中,hostname為裝有MySQL數(shù)據(jù)庫的服務(wù)器名稱,username和password分別是用戶的登錄名稱和口令。

  如果MySQL數(shù)據(jù)庫安裝和配置正確的話,用戶在輸入上述命令之后會(huì)得到如下系統(tǒng)反饋信息:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 49 to server version: 3.2 3-beta-log

Type help for help.

mysql$#@62;

  這樣,用戶就成功進(jìn)入了MySQL數(shù)據(jù)庫系統(tǒng),可以在mysql$#@62;命令提示符之后輸入各種命令。下面,我們列出一些MySQL數(shù)據(jù)庫的主要管理命令供讀者參考,用戶也可以通過在命令符之后輸入help,\h或?得到以下命令的簡單說明。

mysql$#@62; help

help (\h) 顯示命令幫助

? (\h) 作用同上

clear (\c) 清除屏幕內(nèi)容

connect (\r) 重新連接服務(wù)器,可選參數(shù)為 db(數(shù)據(jù)庫)和 host(服務(wù)器)

exit (\) 退出mysql數(shù)據(jù)庫,作用與quit命令相同

go (\g) 將命令傳送至mysql數(shù)據(jù)庫

print (\p) 打印當(dāng)前命令

quit (\q) 退出mysql數(shù)據(jù)庫

status (\s) 顯示服務(wù)器當(dāng)前信息

use (\u) 打開數(shù)據(jù)庫,以數(shù)據(jù)庫名稱作為命令參數(shù)

  上述命令主要用于MySQL數(shù)據(jù)庫的系統(tǒng)管理,如果用戶需要對(duì)某個(gè)具體的數(shù)據(jù)庫進(jìn)行操作,可以使用use命令進(jìn)入該數(shù)據(jù)庫,格式如下:

mysql$#@62; use dbname;

  這里需要提醒讀者注意的一點(diǎn)就是MySQL數(shù)據(jù)庫要求使用者在所有命令的結(jié)尾處使用“;”作為命令結(jié)束符。

數(shù)據(jù)類型和數(shù)據(jù)表

  從本質(zhì)上說,數(shù)據(jù)庫就是一種不斷增長的復(fù)雜的數(shù)據(jù)組織結(jié)構(gòu)。在MySQL數(shù)據(jù)庫中,用于保存數(shù)據(jù)記錄的結(jié)構(gòu)被稱為數(shù)據(jù)表。而每一條數(shù)據(jù)記錄則是由更小的數(shù)據(jù)對(duì)象,即數(shù)據(jù)類型組成。因此,總體來說,一個(gè)或多個(gè)數(shù)據(jù)類型組成一條數(shù)據(jù)記錄,一條或多條數(shù)據(jù)記錄組成一個(gè)數(shù)據(jù)表,一個(gè)或多個(gè)數(shù)據(jù)表組成一個(gè)數(shù)據(jù)庫。我們可以把上述結(jié)構(gòu)理解為如下形式:

Database $#@60; Table $#@60; Record $#@60; Datatype

  數(shù)據(jù)類型分為不同的格式和大小,可以方便數(shù)據(jù)庫的設(shè)計(jì)人員創(chuàng)建最理想的數(shù)據(jù)結(jié)構(gòu)。能否正確的選擇恰當(dāng)?shù)臄?shù)據(jù)類型對(duì)最終數(shù)據(jù)庫的性能具有重要的影響,因此,我們有必要首先對(duì)數(shù)據(jù)類型的有關(guān)概念進(jìn)行較為詳細(xì)的介紹。

MySQL 數(shù)據(jù)類型

  MySQL 數(shù)據(jù)庫提供了多種數(shù)據(jù)類型,其中較為常用的幾種如下:

CHAR (M)

  CHAR數(shù)據(jù)類型用于表示固定長度的字符串,可以包含最多達(dá)255個(gè)字符。其中M代表字符串的長度。

舉例如下:

car_model CHAR(10);

VARCHAR (M)

  VARCHAR是一種比CHAR更加靈活的數(shù)據(jù)類型,同樣用于表示字符數(shù)據(jù),但是VARCHAR可以保存可變長度的字符串。其中M代表該數(shù)據(jù)類型所允許保存的字符串的最大長度,只要長度小于該最大值的字符串都可以被保存在該數(shù)據(jù)類型中。因此,對(duì)于那些難以估計(jì)確切長度的數(shù)據(jù)對(duì)象來說,使用VARCHAR數(shù)據(jù)類型更加明智。VARCHAR數(shù)據(jù)類型所支持的最大長度也是255個(gè)字符。

  這里需要提醒讀者注意的一點(diǎn)是,雖然VARCHAR使用起來較為靈活,但是從整個(gè)系統(tǒng)的性能角度來說,CHAR數(shù)據(jù)類型的處理速度更快,有時(shí)甚至可以超出VARCHAR處理速度的50%。因此,用戶在設(shè)計(jì)數(shù)據(jù)庫時(shí)應(yīng)當(dāng)綜合考慮各方面的因素,以求達(dá)到最佳的平衡。

舉例如下:

car_model VARCHAR(10);

INT (M) [Unsigned]

  INT數(shù)據(jù)類型用于保存從- 2147483647 到2147483648范圍之內(nèi)的任意整數(shù)數(shù)據(jù)。如果用戶使用Unsigned選項(xiàng),則有效數(shù)據(jù)范圍調(diào)整為0-4294967295。舉例如下:

light_years INT;

  按照上述數(shù)據(jù)類型的設(shè)置,-24567為有效數(shù)據(jù),而3000000000則因?yàn)槌隽擞行?shù)據(jù)范圍成為無效數(shù)據(jù)。

再例如:

light_years INT unsigned;

這時(shí),3000000000成為有效數(shù)據(jù),而-24567則成為無效數(shù)據(jù)。

FLOAT [(M,D)]

  FLOAT數(shù)據(jù)類型用于表示數(shù)值較小的浮點(diǎn)數(shù)據(jù),可以提供更加準(zhǔn)確的數(shù)據(jù)精度。其中,M代表浮點(diǎn)數(shù)據(jù)的長度(即小數(shù)點(diǎn)左右數(shù)據(jù)長度的總和),D表示浮點(diǎn)數(shù)據(jù)位于小數(shù)點(diǎn)右邊的數(shù)值位數(shù)。

舉例如下:

rainfall FLOAT (4,2);

  按照上述數(shù)據(jù)類型的設(shè)置,42.35為有效數(shù)據(jù),而324.45和3.542則因?yàn)槌^數(shù)據(jù)長度限制或者小數(shù)點(diǎn)右邊位數(shù)大于規(guī)定值2成為無效數(shù)據(jù)。

DATE

  DATE數(shù)據(jù)類型用于保存日期數(shù)據(jù),默認(rèn)格式為YYYY-MM-DD。MySQL提供了許多功能強(qiáng)大的日期格式化和操作命令,本文無法在此一一進(jìn)行介紹,感興趣的讀者可以參看MySQL的技術(shù)文檔。

DATE數(shù)據(jù)類型舉例如下:

the_date DATE;

TEXT / BLOB

  TEXT和BLOB數(shù)據(jù)類型可以用來保存255 到65535個(gè)字符,如果用戶需要把大段文本保存到數(shù)據(jù)庫內(nèi)的話,可以選用TEXT或BLOB數(shù)據(jù)類型。TEXT和BLOB這兩種數(shù)據(jù)類型基本相同,唯一的區(qū)別在于TEXT不區(qū)分大小寫,而BLOB對(duì)字符的大小寫敏感。

SET

  SET數(shù)據(jù)類型是多個(gè)數(shù)據(jù)值的組合,任何部分或全部數(shù)據(jù)值都是該數(shù)據(jù)類型的有效數(shù)據(jù)。SET數(shù)據(jù)類型最大可以包含64個(gè)指定數(shù)據(jù)值。

舉例如下:

transport SET ("truck", "wagon") NOT NULL;

  根據(jù)上述數(shù)據(jù)類型的設(shè)置,truck、wagon、以及truck,wagon都可以成為transport的有效值。


[page_break]

ENUM

  ENUM數(shù)據(jù)類型和SET基本相同,唯一的區(qū)別在于ENUM只允許選擇一個(gè)有效數(shù)據(jù)值。例如:

transport ENUM ("truck", "wagon") NOT NULL;

  根據(jù)上述設(shè)置,truck或wagon將成為transport的有效數(shù)據(jù)值。

  以上,我們只是對(duì)用戶使用MySQL數(shù)據(jù)庫的過程中經(jīng)常用到的數(shù)據(jù)類型進(jìn)行了簡單介紹,有興趣的讀者,可以參看MySQL技術(shù)文檔的詳細(xì)說明。

數(shù)據(jù)記錄

  一組經(jīng)過聲明的數(shù)據(jù)類型就可以組成一條記錄。記錄小到可以只包含一個(gè)數(shù)據(jù)變量,大到可以滿足用戶的各種復(fù)雜需求。多條記錄組合在一起就構(gòu)成了數(shù)據(jù)表的基本結(jié)構(gòu)。

數(shù)據(jù)表

  在我們執(zhí)行各種數(shù)據(jù)庫命令之前,首先需要?jiǎng)?chuàng)建用來保存信息的數(shù)據(jù)表。我們可以通過以下方式在MySQL數(shù)據(jù)庫中創(chuàng)建新的數(shù)據(jù)表:

mysql$#@62; CREATE TABLE test (

$#@62; name VARCHAR (15),

$#@62; email VARCHAR (25),

$#@62; phone_number INT,

$#@62; ID INT NOT NULL AUTO_INCREMENT,

$#@62; PRIMARY KEY (ID));

系統(tǒng)反饋信息為:

Query OK, 0 rows affected (0.10 sec)

mysql$#@62;

  這樣,我們就在數(shù)據(jù)庫中創(chuàng)建了一個(gè)新的數(shù)據(jù)表。注意,同一個(gè)數(shù)據(jù)庫中不能存在兩個(gè)名稱相同的數(shù)據(jù)表。

  這里,我們使用CREATE TABLE命令創(chuàng)建的test數(shù)據(jù)表中包含name,email,phone_number和ID四個(gè)字段。MySQL數(shù)據(jù)庫允許字段名中包含字符或數(shù)字,最大長度可以達(dá)到64個(gè)字符。

  下面,我們來看一看創(chuàng)建數(shù)據(jù)表時(shí)所用到的幾個(gè)主要的參數(shù)選項(xiàng)。

Primary Key

  具有Primary Key限制條件的字段用于區(qū)分同一個(gè)數(shù)據(jù)表中的不同記錄。因?yàn)橥粋(gè)數(shù)據(jù)表中不會(huì)存在兩個(gè)具有相同值的Primary Key字段,所以對(duì)于那些需要嚴(yán)格區(qū)分不同記錄的數(shù)據(jù)表來說,Primary Key具有相當(dāng)重要的作用。

Auto_Increment

  具有Auto_Increment限制條件的字段值從1開始,每增加一條新記錄,值就會(huì)相應(yīng)地增加1。一般來說,我們可以把Auto_Increment字段作為數(shù)據(jù)表中每一條記錄的標(biāo)識(shí)字段。

NOT NULL

  NOT NULL限制條件規(guī)定用戶不得在該字段中插入空值。

其它數(shù)據(jù)表命令

  除了創(chuàng)建新的數(shù)據(jù)表之外,MySQL數(shù)據(jù)庫還提供了其它許多非常實(shí)用的以數(shù)據(jù)表作為操作對(duì)象的命令。

顯示數(shù)據(jù)表命令

mysql$#@62; show tables;

  該命令將會(huì)列出當(dāng)前數(shù)據(jù)庫下的所有數(shù)據(jù)表。

顯示字段命令

mysql$#@62; show columns from tablename;

  該命令將會(huì)返回指定數(shù)據(jù)表的所有字段和字段相關(guān)信息。

數(shù)據(jù)操作

  對(duì)MySQL數(shù)據(jù)庫中數(shù)據(jù)的操作可以劃分為四種不同的類型,分別是添加、刪除、修改和查詢,我們將會(huì)在本節(jié)中對(duì)此進(jìn)行介紹。但是,首先我們需要強(qiáng)調(diào)的一點(diǎn)就是MySQL數(shù)據(jù)庫所采用的SQL語言同其它絕大多數(shù)計(jì)算機(jī)編程語言一樣,對(duì)命令的語法格式有嚴(yán)格的規(guī)定。任何語法格式上的錯(cuò)誤,例如不正確的使用括號(hào)、逗號(hào)或分號(hào)等都可能導(dǎo)致命令執(zhí)行過程中的錯(cuò)誤。因此,建議用戶在學(xué)習(xí)時(shí)一定要多留心語法格式的使用。

添加記錄

  用戶可以使用INSERT命令向數(shù)據(jù)庫中添加新的記錄。

例如:

mysql$#@62; INSERT INTO test VALUES

mysql$#@62; (John, carrots@mail.com,

mysql$#@62; 5554321, NULL);

  上述命令正確執(zhí)行后會(huì)返回以下信息:

Query OK, 1 row affected (0.02 sec)

mysql$#@62;

  對(duì)上述命令有幾點(diǎn)我們需要說明。首先,所有的字符類型數(shù)據(jù)都必須使用單引號(hào)括起來。其次,NULL關(guān)鍵字與AUTO_INCREMENT限制條件相結(jié)合可以為字段自動(dòng)賦值。最后,也是最重要的一點(diǎn)就是新記錄的字段值必須與數(shù)據(jù)表中的原字段相對(duì)應(yīng),如果原數(shù)據(jù)表中有4個(gè)字段,而用戶所添加的記錄包含3個(gè)或5個(gè)字段的話都會(huì)導(dǎo)致錯(cuò)誤出現(xiàn)。

  MySQL數(shù)據(jù)庫的一個(gè)非常顯著的優(yōu)勢(shì)就是可以對(duì)整數(shù)、字符串和日期數(shù)據(jù)進(jìn)行自動(dòng)轉(zhuǎn)換。因此,用戶在添加新記錄時(shí)就不必?fù)?dān)心因?yàn)閿?shù)據(jù)類型不相符而出現(xiàn)錯(cuò)誤。

查詢數(shù)據(jù)

  如果我們無法從數(shù)據(jù)庫中查找和讀取數(shù)據(jù)的話,數(shù)據(jù)庫就喪失了其存在和使用的價(jià)值。

  在MySql數(shù)據(jù)庫中,用戶可以使用SELECT命令進(jìn)行數(shù)據(jù)的查詢。

例如:

mysql$#@62; SELECT * FROM test

mysql$#@62; WHERE (name = "John");

上述命令會(huì)返回如下結(jié)果:

name

email

phone

ID

John

carrots@mail.com

5554321

1

刪除數(shù)據(jù)

  用戶除了可以向數(shù)據(jù)表中添加新的記錄之外,還可以刪除數(shù)據(jù)表中的已有記錄。刪除記錄可以使用DELETE命令。

例如:

mysql$#@62; DELETE FROM test

mysql$#@62; WHERE (name = "");

  該命令將會(huì)刪除test數(shù)據(jù)表中name字段的值為John的記錄。同樣,

mysql$#@62; DELETE FROM test

mysql$#@62; WHERE (phone_number = 5554321);

  將會(huì)從數(shù)據(jù)表中刪除phone_number字段值為5554321的記錄。

修改數(shù)據(jù)

  MySQL數(shù)據(jù)庫還支持用戶對(duì)已經(jīng)輸入到數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行修改。修改記錄可以使用UPDATE命令。

例如:

mysql$#@62; UPDATE test SET name = Mary

mysql$#@62; WHERE name = "John";

上述命令的執(zhí)行結(jié)果如下:

name

email

phone

ID

Mary

carrots@mail.com

5554321

1

  到此為止,我們對(duì)MySQL數(shù)據(jù)庫數(shù)據(jù)操作的核心概念,即數(shù)據(jù)的添加、刪除、修改和查詢進(jìn)行了簡單的介紹。事實(shí)上,MySQL數(shù)據(jù)庫所支持的SQL語言具有非常豐富和強(qiáng)大的數(shù)據(jù)操作功能,感興趣的讀者可以參看網(wǎng)頁陶吧欄目內(nèi)的相關(guān)文章。我們?cè)谶@里就不重復(fù)介紹了。