數(shù)據(jù)庫從最初的數(shù)據(jù)文件的簡單集合發(fā)展到今天的大型數(shù)據(jù)庫管理系統(tǒng)已經(jīng)成為我們?nèi)粘I钪胁豢扇鄙俚慕M成部分。如果不借助數(shù)據(jù)庫的幫助,許多簡單的工作將變得冗長乏味,甚至難以實現(xiàn)。尤其是象銀行、院校和圖書館這樣的大型組織更加依靠數(shù)據(jù)庫系統(tǒng)實現(xiàn)其正常的運作。再看互聯(lián)網(wǎng)上,從搜索引擎到在線商場,從網(wǎng)上聊天到郵件列表,都離不開數(shù)據(jù)庫。
目前,市面上的數(shù)據(jù)庫產(chǎn)品多種多樣,從大型企業(yè)的解決方案到中小企業(yè)或個人用戶的小型應用系統(tǒng),可以滿足用戶的多樣化需求。這里,我們所要向大家介紹的MySQL數(shù)據(jù)庫是眾多的關系型數(shù)據(jù)庫產(chǎn)品中的一個,相比較其它系統(tǒng)而言,MySQL數(shù)據(jù)庫可以稱得上是目前運行速度最快的SQL語言數(shù)據(jù)庫。除了具有許多其它數(shù)據(jù)庫所不具備的功能和選擇之外,MySQL數(shù)據(jù)庫是一種完全免費的產(chǎn)品,用戶可以直接從網(wǎng)上下載數(shù)據(jù)庫,用于個人或商業(yè)用途,而不必支付任何費用(推薦下載站點http://www.)。 總體來說,MySQL數(shù)據(jù)庫具有以下主要特點: 1. 同時訪問數(shù)據(jù)庫的用戶數(shù)量不受限制; 2. 可以保存超過50,000,000條記錄; 3. 是目前市場上現(xiàn)有產(chǎn)品中運行速度最快的數(shù)據(jù)庫系統(tǒng); 4. 用戶權(quán)限設置簡單、有效。 如今,包括Siemens和Silicon Graphics這樣的國際知名公司也開始把MySQL作為其數(shù)據(jù)庫管理系統(tǒng),這就更加證明了MySQL數(shù)據(jù)庫的優(yōu)越性能和廣闊的市場發(fā)展前景。 本文將重點向讀者介紹MySQL數(shù)據(jù)庫的一些基本操作,包括如何與數(shù)據(jù)庫建立連接,如果設置數(shù)據(jù)庫,以及如何執(zhí)行基本的命令等。希望能夠?qū)ψx者學習和掌握MySQL數(shù)據(jù)庫有所助益。
入門 一般來說,我們訪問MySQL數(shù)據(jù)庫時,首先需要使用telnet遠程登錄安裝數(shù)據(jù)庫系統(tǒng)的服務器,然后再進入MySQL數(shù)據(jù)庫。MySQL數(shù)據(jù)庫的連接命令如下: mysql -h hostname -u username -p[password] 或者: mysql -h hostname -u username --password=password 其中,hostname為裝有MySQL數(shù)據(jù)庫的服務器名稱,username和password分別是用戶的登錄名稱和口令。 如果MySQL數(shù)據(jù)庫安裝和配置正確的話,用戶在輸入上述命令之后會得到如下系統(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; 這樣,用戶就成功進入了MySQL數(shù)據(jù)庫系統(tǒng),可以在mysql$#@62;命令提示符之后輸入各種命令。下面,我們列出一些MySQL數(shù)據(jù)庫的主要管理命令供讀者參考,用戶也可以通過在命令符之后輸入help,\h或?得到以下命令的簡單說明。 mysql$#@62; help help (\h) 顯示命令幫助 (\h) 作用同上 clear (\c) 清除屏幕內(nèi)容 connect (\r) 重新連接服務器,可選參數(shù)為 db(數(shù)據(jù)庫)和 host(服務器) exit (\) 退出mysql數(shù)據(jù)庫,作用與quit命令相同 go (\g) 將命令傳送至mysql數(shù)據(jù)庫 print (\p) 打印當前命令 quit (\q) 退出mysql數(shù)據(jù)庫 status (\s) 顯示服務器當前信息 use (\u) 打開數(shù)據(jù)庫,以數(shù)據(jù)庫名稱作為命令參數(shù) 上述命令主要用于MySQL數(shù)據(jù)庫的系統(tǒng)管理,如果用戶需要對某個具體的數(shù)據(jù)庫進行操作,可以使用use命令進入該數(shù)據(jù)庫,格式如下: mysql$#@62; use dbname; 這里需要提醒讀者注意的一點就是MySQL數(shù)據(jù)庫要求使用者在所有命令的結(jié)尾處使用“;”作為命令結(jié)束符。
數(shù)據(jù)類型和數(shù)據(jù)表 從本質(zhì)上說,數(shù)據(jù)庫就是一種不斷增長的復雜的數(shù)據(jù)組織結(jié)構(gòu)。在MySQL數(shù)據(jù)庫中,用于保存數(shù)據(jù)記錄的結(jié)構(gòu)被稱為數(shù)據(jù)表。而每一條數(shù)據(jù)記錄則是由更小的數(shù)據(jù)對象,即數(shù)據(jù)類型組成。因此,總體來說,一個或多個數(shù)據(jù)類型組成一條數(shù)據(jù)記錄,一條或多條數(shù)據(jù)記錄組成一個數(shù)據(jù)表,一個或多個數(shù)據(jù)表組成一個數(shù)據(jù)庫。我們可以把上述結(jié)構(gòu)理解為如下形式: Database $#@60; Table $#@60; Record $#@60; Datatype 數(shù)據(jù)類型分為不同的格式和大小,可以方便數(shù)據(jù)庫的設計人員創(chuàng)建最理想的數(shù)據(jù)結(jié)構(gòu)。能否正確的選擇恰當?shù)臄?shù)據(jù)類型對最終數(shù)據(jù)庫的性能具有重要的影響,因此,我們有必要首先對數(shù)據(jù)類型的有關概念進行較為詳細的介紹。
MySQL 數(shù)據(jù)類型 MySQL 數(shù)據(jù)庫提供了多種數(shù)據(jù)類型,其中較為常用的幾種如下: CHAR (M) CHAR數(shù)據(jù)類型用于表示固定長度的字符串,可以包含最多達255個字符。其中M代表字符串的長度。 舉例如下: car_model CHAR(10); VARCHAR (M) VARCHAR是一種比CHAR更加靈活的數(shù)據(jù)類型,同樣用于表示字符數(shù)據(jù),但是VARCHAR可以保存可變長度的字符串。其中M代表該數(shù)據(jù)類型所允許保存的字符串的最大長度,只要長度小于該最大值的字符串都可以被保存在該數(shù)據(jù)類型中。因此,對于那些難以估計確切長度的數(shù)據(jù)對象來說,使用VARCHAR數(shù)據(jù)類型更加明智。VARCHAR數(shù)據(jù)類型所支持的最大長度也是255個字符。 這里需要提醒讀者注意的一點是,雖然VARCHAR使用起來較為靈活,但是從整個系統(tǒng)的性能角度來說,CHAR數(shù)據(jù)類型的處理速度更快,有時甚至可以超出VARCHAR處理速度的50%。因此,用戶在設計數(shù)據(jù)庫時應當綜合考慮各方面的因素,以求達到最佳的平衡。 舉例如下: car_model VARCHAR(10); INT (M) [Unsigned] INT數(shù)據(jù)類型用于保存從- 2147483647 到2147483648范圍之內(nèi)的任意整數(shù)數(shù)據(jù)。如果用戶使用Unsigned選項,則有效數(shù)據(jù)范圍調(diào)整為0-4294967295。舉例如下: light_years INT; 按照上述數(shù)據(jù)類型的設置,-24567為有效數(shù)據(jù),而3000000000則因為超出了有效數(shù)據(jù)范圍成為無效數(shù)據(jù)。 再例如: light_years INT unsigned; 這時,3000000000成為有效數(shù)據(jù),而-24567則成為無效數(shù)據(jù)。 FLOAT [(M,D)] FLOAT數(shù)據(jù)類型用于表示數(shù)值較小的浮點數(shù)據(jù),可以提供更加準確的數(shù)據(jù)精度。其中,M代表浮點數(shù)據(jù)的長度(即小數(shù)點左右數(shù)據(jù)長度的總和),D表示浮點數(shù)據(jù)位于小數(shù)點右邊的數(shù)值位數(shù)。 舉例如下: rainfall FLOAT (4,2); 按照上述數(shù)據(jù)類型的設置,42.35為有效數(shù)據(jù),而324.45和3.542則因為超過數(shù)據(jù)長度限制或者小數(shù)點右邊位數(shù)大于規(guī)定值2成為無效數(shù)據(jù)。 DATE DATE數(shù)據(jù)類型用于保存日期數(shù)據(jù),默認格式為YYYY-MM-DD。MySQL提供了許多功能強大的日期格式化和操作命令,本文無法在此一一進行介紹,感興趣的讀者可以參看MySQL的技術(shù)文檔。 DATE數(shù)據(jù)類型舉例如下: the_date DATE; TEXT / BLOB TEXT和BLOB數(shù)據(jù)類型可以用來保存255 到65535個字符,如果用戶需要把大段文本保存到數(shù)據(jù)庫內(nèi)的話,可以選用TEXT或BLOB數(shù)據(jù)類型。TEXT和BLOB這兩種數(shù)據(jù)類型基本相同,唯一的區(qū)別在于TEXT不區(qū)分大小寫,而BLOB對字符的大小寫敏感。 SET SET數(shù)據(jù)類型是多個數(shù)據(jù)值的組合,任何部分或全部數(shù)據(jù)值都是該數(shù)據(jù)類型的有效數(shù)據(jù)。SET數(shù)據(jù)類型最大可以包含64個指定數(shù)據(jù)值。 舉例如下: transport SET ("truck", "wagon") NOT NULL; 根據(jù)上述數(shù)據(jù)類型的設置,truck、wagon、以及truck,wagon都可以成為transport的有效值。 ENUM ENUM數(shù)據(jù)類型和SET基本相同,唯一的區(qū)別在于ENUM只允許選擇一個有效數(shù)據(jù)值。例如: transport ENUM ("truck", "wagon") NOT NULL; 根據(jù)上述設置,truck或wagon將成為transport的有效數(shù)據(jù)值。 以上,我們只是對用戶使用MySQL數(shù)據(jù)庫的過程中經(jīng)常用到的數(shù)據(jù)類型進行了簡單介紹,有興趣的讀者,可以參看MySQL技術(shù)文檔的詳細說明。
數(shù)據(jù)記錄 一組經(jīng)過聲明的數(shù)據(jù)類型就可以組成一條記錄。記錄小到可以只包含一個數(shù)據(jù)變量,大到可以滿足用戶的各種復雜需求。多條記錄組合在一起就構(gòu)成了數(shù)據(jù)表的基本結(jié)構(gòu)。
數(shù)據(jù)表 在我們執(zhí)行各種數(shù)據(jù)庫命令之前,首先需要創(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)建了一個新的數(shù)據(jù)表。注意,同一個數(shù)據(jù)庫中不能存在兩個名稱相同的數(shù)據(jù)表。 這里,我們使用CREATE TABLE命令創(chuàng)建的test數(shù)據(jù)表中包含name,email,phone_number和ID四個字段。MySQL數(shù)據(jù)庫允許字段名中包含字符或數(shù)字,最大長度可以達到64個字符。 下面,我們來看一看創(chuàng)建數(shù)據(jù)表時所用到的幾個主要的參數(shù)選項。 Primary Key 具有Primary Key限制條件的字段用于區(qū)分同一個數(shù)據(jù)表中的不同記錄。因為同一個數(shù)據(jù)表中不會存在兩個具有相同值的Primary Key字段,所以對于那些需要嚴格區(qū)分不同記錄的數(shù)據(jù)表來說,Primary Key具有相當重要的作用。 Auto_Increment 具有Auto_Increment限制條件的字段值從1開始,每增加一條新記錄,值就會相應地增加1。一般來說,我們可以把Auto_Increment字段作為數(shù)據(jù)表中每一條記錄的標識字段。 NOT NULL NOT NULL限制條件規(guī)定用戶不得在該字段中插入空值。 其它數(shù)據(jù)表命令 除了創(chuàng)建新的數(shù)據(jù)表之外,MySQL數(shù)據(jù)庫還提供了其它許多非常實用的以數(shù)據(jù)表作為操作對象的命令。 顯示數(shù)據(jù)表命令 mysql$#@62; show tables; 該命令將會列出當前數(shù)據(jù)庫下的所有數(shù)據(jù)表。 顯示字段命令 mysql$#@62; show columns from tablename; 該命令將會返回指定數(shù)據(jù)表的所有字段和字段相關信息。
數(shù)據(jù)操作 對MySQL數(shù)據(jù)庫中數(shù)據(jù)的操作可以劃分為四種不同的類型,分別是添加、刪除、修改和查詢,我們將會在本節(jié)中對此進行介紹。但是,首先我們需要強調(diào)的一點就是MySQL數(shù)據(jù)庫所采用的SQL語言同其它絕大多數(shù)計算機編程語言一樣,對命令的語法格式有嚴格的規(guī)定。任何語法格式上的錯誤,例如不正確的使用括號、逗號或分號等都可能導致命令執(zhí)行過程中的錯誤。因此,建議用戶在學習時一定要多留心語法格式的使用。 添加記錄 用戶可以使用INSERT命令向數(shù)據(jù)庫中添加新的記錄。 例如: mysql$#@62; INSERT INTO test VALUES mysql$#@62; (John, carrots@mail.com, mysql$#@62; 5554321, NULL); 上述命令正確執(zhí)行后會返回以下信息: Query OK, 1 row affected (0.02 sec) mysql$#@62; 對上述命令有幾點我們需要說明。首先,所有的字符類型數(shù)據(jù)都必須使用單引號括起來。其次,NULL關鍵字與AUTO_INCREMENT限制條件相結(jié)合可以為字段自動賦值。最后,也是最重要的一點就是新記錄的字段值必須與數(shù)據(jù)表中的原字段相對應,如果原數(shù)據(jù)表中有4個字段,而用戶所添加的記錄包含3個或5個字段的話都會導致錯誤出現(xiàn)。 MySQL數(shù)據(jù)庫的一個非常顯著的優(yōu)勢就是可以對整數(shù)、字符串和日期數(shù)據(jù)進行自動轉(zhuǎn)換。因此,用戶在添加新記錄時就不必擔心因為數(shù)據(jù)類型不相符而出現(xiàn)錯誤。 查詢數(shù)據(jù) 如果我們無法從數(shù)據(jù)庫中查找和讀取數(shù)據(jù)的話,數(shù)據(jù)庫就喪失了其存在和使用的價值。 在MySql數(shù)據(jù)庫中,用戶可以使用SELECT命令進行數(shù)據(jù)的查詢。 例如: mysql$#@62; SELECT * FROM test mysql$#@62; WHERE (name = "John"); 上述命令會返回如下結(jié)果:
刪除數(shù)據(jù) 用戶除了可以向數(shù)據(jù)表中添加新的記錄之外,還可以刪除數(shù)據(jù)表中的已有記錄。刪除記錄可以使用DELETE命令。 例如: mysql$#@62; DELETE FROM test mysql$#@62; WHERE (name = ""); 該命令將會刪除test數(shù)據(jù)表中name字段的值為John的記錄。同樣, mysql$#@62; DELETE FROM test mysql$#@62; WHERE (phone_number = 5554321); 將會從數(shù)據(jù)表中刪除phone_number字段值為5554321的記錄。 修改數(shù)據(jù) MySQL數(shù)據(jù)庫還支持用戶對已經(jīng)輸入到數(shù)據(jù)表中的數(shù)據(jù)進行修改。修改記錄可以使用UPDATE命令。 例如: mysql$#@62; UPDATE test SET name = Mary mysql$#@62; WHERE name = "John"; 上述命令的執(zhí)行結(jié)果如下:
到此為止,我們對MySQL數(shù)據(jù)庫數(shù)據(jù)操作的核心概念,即數(shù)據(jù)的添加、刪除、修改和查詢進行了簡單的介紹。事實上,MySQL數(shù)據(jù)庫所支持的SQL語言具有非常豐富和強大的數(shù)據(jù)操作功能,感興趣的讀者可以參看網(wǎng)頁陶吧欄目內(nèi)的相關文章。我們在這里就不重復介紹了。
|
|
來自: todaytomo > 《數(shù)據(jù)庫》