久久―日本道色综合久久,亚洲欧美精品在线,狼狼色丁香久久婷婷综合五月,香蕉人人超,日本网站黄,国产在线观看不卡免费高清,无遮挡的毛片免费

2023信創(chuàng)獨(dú)角獸企業(yè)100強(qiáng)
全世界各行各業(yè)聯(lián)合起來(lái),internet一定要實(shí)現(xiàn)!

MySQL數(shù)據(jù)庫(kù)基礎(chǔ)教程

2004-02-16 eNet&Ciweek

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

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

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

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

2. 可以保存超過(guò)50,000,000條記錄;

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

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

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

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


入門

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

mysql -h hostname -u username -p[password]
或者:

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

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

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

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 49 to server version: 3.21.23-beta-log
Type 'help' for help.
mysql>

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

mysql> help

help (\h) 顯示命令幫助
? (\h) 作用同上
clear (\c) 清除屏幕內(nèi)容
connect (\r) 重新連接服務(wù)器,可選參數(shù)為 db(數(shù)據(jù)庫(kù))和 host(服務(wù)器)
exit (\) 退出mysql數(shù)據(jù)庫(kù),作用與quit命令相同
go (\g) 將命令傳送至mysql數(shù)據(jù)庫(kù)
print (\p) 打印當(dāng)前命令
quit (\q) 退出mysql數(shù)據(jù)庫(kù)
status (\s) 顯示服務(wù)器當(dāng)前信息
use (\u) 打開(kāi)數(shù)據(jù)庫(kù),以數(shù)據(jù)庫(kù)名稱作為命令參數(shù)

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

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


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

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

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


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

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

舉例如下:

car_model CHAR(10);
VARCHAR (M)

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

  這里需要提醒讀者注意的一點(diǎn)是,雖然VARCHAR使用起來(lái)較為靈活,但是從整個(gè)系統(tǒng)的性能角度來(lái)說(shuō),CHAR數(shù)據(jù)類型的處理速度更快,有時(shí)甚至可以超出VARCHAR處理速度的50%。因此,用戶在設(shè)計(jì)數(shù)據(jù)庫(kù)時(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ù)范圍成為無(wú)效數(shù)據(jù)。

再例如:

light_years INT unsigned;
這時(shí),3000000000成為有效數(shù)據(jù),而-24567則成為無(wú)效數(shù)據(jù)。

FLOAT [(M,D)]

  FLOAT數(shù)據(jù)類型用于表示數(shù)值較小的浮點(diǎn)數(shù)據(jù),可以提供更加準(zhǔn)確的數(shù)據(jù)精度。其中,M代表浮點(diǎn)數(shù)據(jù)的長(zhǎng)度(即小數(shù)點(diǎn)左右數(shù)據(jù)長(zhǎng)度的總和),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)槌^(guò)數(shù)據(jù)長(zhǎng)度限制或者小數(shù)點(diǎn)右邊位數(shù)大于規(guī)定值2成為無(wú)效數(shù)據(jù)。

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

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

the_date DATE;
TEXT / BLOB

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

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的有效值。

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ù)庫(kù)的過(guò)程中經(jīng)常用到的數(shù)據(jù)類型進(jìn)行了簡(jiǎn)單介紹,有興趣的讀者,可以參看MySQL技術(shù)文檔的詳細(xì)說(shuō)明。

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

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

數(shù)據(jù)表

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

mysql> CREATE TABLE test (
> name VARCHAR (15),
> email VARCHAR (25),
> phone_number INT,
> ID INT NOT NULL AUTO_INCREMENT,
> PRIMARY KEY (ID));

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

Query OK, 0 rows affected (0.10 sec)

mysql>

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

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

  下面,我們來(lái)看一看創(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ù)表來(lái)說(shuō),Primary Key具有相當(dāng)重要的作用。

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

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

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

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

顯示數(shù)據(jù)表命令
mysql> show tables;

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

顯示字段命令
mysql> show columns from tablename;

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


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

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

添加記錄

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

mysql> INSERT INTO test VALUES
mysql> ('John', 'carrots@mail.com',
mysql> 5554321, NULL);

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

Query OK, 1 row affected (0.02 sec)
mysql>

  對(duì)上述命令有幾點(diǎn)我們需要說(shuō)明。首先,所有的字符類型數(shù)據(jù)都必須使用單引號(hào)括起來(lái)。其次,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ù)庫(kù)的一個(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ù)

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

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

例如:

mysql> SELECT * FROM test

mysql> WHERE (name = "John");

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

name
email
phone
ID

John
carrots@mail.com
5554321
1

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

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

例如:

mysql> DELETE FROM test
mysql> WHERE (name = "");

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

mysql> DELETE FROM test
mysql> WHERE (phone_number = 5554321);

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

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

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

例如:

mysql> UPDATE test SET name = 'Mary'

mysql> WHERE name = "John";

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

name
email
phone
ID

Mary
carrots@mail.com
5554321
1

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


相關(guān)頻道: eNews

您對(duì)本文或本站有任何意見(jiàn),請(qǐng)?jiān)谙路教峤唬x謝!

投稿信箱:tougao@enet16.com