摘要 在這一章,我們將集中學習如何使用結構化查詢語言(SQL)在MySQL數據庫中工作。 (2002-08-29 14:11:10) -------------------------------------------------------------------------------- By Wing, 出處:Linuxaid 第二章: MySQL入門 歡迎回到這個教程!在上一章,我們學習了安裝和配置PHP和MySQL這兩個軟件。在這一章,我們將集中學習如果使用結構化查詢語言(SQL)在MySQL數據庫中工作。 數據庫入門 上一章簡要說明的那樣,PHP是一個服務器端的腳本語言,通過這個語言你可以在你的Web頁面中添加指令,這樣你的Web服務軟件(可能是Apache,Personal Web Server或其他任何軟件)會在向發出請求的浏覽器發送這些頁面前首先執行它。在那個簡單的例子中,我展示了如何每次在接受請求的Web頁面中插入當前的日期。 都很清楚了,但是如果在其中添加一個數據庫會真正引起我們的興趣。一個數據庫服務器(我們這裡是MySQL)是一個使用一定格式存儲大量信息的程序,通過這個程序你可以很簡單地使用象PHP這樣的腳本語言來訪問數據。例如,你可以使用PHP在數據庫中獲得一個笑話的列表並將其顯示到你的Web站點。 子中,笑話被完全存儲在數據庫中。這樣做有兩個好處。首先,你不再需要為你的每個笑話寫一個HTML文件,你只需要寫一個PHP文件來從數據庫中引出任何的笑話並顯示它;其次,要添加笑話到你的Web站點中,也僅僅是添加笑話到數據庫中。PHP代碼在新笑話包含在列表中時可以自動顯示新的笑話。 們通過這個例子來看看數據是如何在數據庫中存儲的。一個數據庫包含一個或幾個數據表(table),每一個數據表包含了一個事物的列表。對於我們的笑話數據庫來說,我們一開始可能需要一個名為“jokes”的數據表,這個數據表包含了一個笑話列表。數據庫中每個數據表包含一個或幾個數據列(column)或數據域(field)。回到我們的例子中來,我們的“jokes”數據表可能有這樣的兩列:笑話的正文以及笑話添加到數據庫中的日期。每個存儲在數據表中的笑話我們稱之為一行。要了解這兒提到的所有術語,你可以看下面這張圖: 在笑話正文(“JokeText”)和添加日期(“JokeDate”)這兩個數據列之外,我還增加了一個叫做“ID”的數據列。這個數據列的作用是給每個笑話分配一個唯一的號碼,這樣我們可以很容易地查閱並區分這些笑話。 習一下,上面的數據表中有三個數據列、兩行。每一行包含了一個笑話的ID、它的正文以及它的添加日期。掌握了這些基本術語後,我們將開始使用MySQL。 登錄MySQL SQL數據庫的標准界面是連接到MySQL服務軟件(在第一章內安裝)並同時輸入命令。要連接上服務器,我們需要使用MySQL客戶端程序。如果你自己安裝了MySQL服務軟件,不管你是在Windows下安裝的,還是在一些Unix的版本下安裝的,你應該已經在安裝服務程序的同一地點安裝了這個客戶端程序。在Linux,這個程序被稱之為mysql,其位置默認是/usr/local/mysql/bin 目錄。在Windows下,這個程序被稱之為mysql.exe,其位置默認是C:mysqlin目錄。 是自己安裝的MySQL服務器(例如,你是在你的Web主機提供商的MySQL服務器上工作),那麼有兩個方法連接到MySQL服務器,第一個方法是使用telnet登錄到你的Web主機的服務器上,然後在那兒運行mysql。第二種方法是從http://www.mysql.com/(for Windows和for Linux的都可以免費獲得) 下載並安裝MySQL客戶端程序。這兩種方法都可以很好地工作,你的Web主機可能支持其中的一種,或者兩種都支持(你需要去問清楚)。 擇了哪種方法,不管你使用的是哪種系統,你最終都應該在一個命令行執行MySQL客戶端程序去連接你的MySQL服務器,你需要輸入下面的命令: mysql -h -u -p 換成你的MySQL服務器正在其上運行的計算機的主機名或IP地址。如果你在運行服務的同一台計算機上運行客戶端程序,你可以不使用-h 而且直接使用-h localhost。應該是你的MySQL用戶名。如果你是自己安裝的MySQL服務器,這應該就是root。如果你是使用的你的Web主機提供商的MySQL服務,這應該是他們為你指定的MySQL用戶。 參數告訴程序提示你輸入你的口令,這將在你輸入上面的命令後立即顯示。如果你是自己安裝的MySQL,你的口令就是你在第一章內選擇的root的口令。如果你是使用的你的Web主機提供商的MySQL服務,這應該是他們給你的MySQL口令。 切都輸入好了,MySQL客戶端程序會連接上MySQL服務器並返回給你一個MySQL的命令行: mysql> ySQL服務器實際上是連接了好幾個數據庫(這使得一個Web主機可以為幾個用戶設置同一個MySQL服務器)。所以你的下一步應該是選擇一個工作的數據庫。首先,獲得當前服務器上的數據庫列表。輸入下面的命令(不要忘了分號!),然後打回車。 mysql> SHOW DATABASES; L會顯示給你服務器上的數據庫列表。如果這是一個新安裝的服務器(也就是說,這是你在第一章裡自己安裝的)。這個列表將會是這樣: +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.11 sec) L服務器使用第一個被稱之為mysql的數據庫來管理用戶及其口令和權限。現在我們暫時不會關心這個數據庫,在以後的章節中,我們會討論它。第二個叫test是一個數據模塊。你可以刪除這個數據庫,在我們的教程中不會使用到它(我們會自己建立一些數據庫)。刪除什麼東西在MySQL中被稱之為“dropping”,要刪除test數據庫,其正確的命令應該是: mysql> DROP DATABASE test; 入了這個命令,並打了回車,MySQL會刪除這個數據庫,並返回Query OK。注意,並不會提示你諸如“這是否確定”這樣的信息。所以你在MySQL輸入命令必須十分小心。就象我們在這兒看到的,你可以完全刪除數據庫--包含它其中的所有信息--僅僅只用一個命令! 入下一步之前,讓我們先來看看MySQL命令行的連接。正如我們已經注意到的,在MySQL中的所有命令都必須以分號(;)結束。如果你忘記了這個分號,MySQL會認為你還沒有結束輸入你的命令,並會讓你這下一行中繼續錄入: mysql> SHOW -> DATABASES; L在等待你輸入命令中的剩余部分時,提示符會從mysql>改變為->。對於一個長命令,這是很有用的,你可以將你的命令分幾行輸入。 途發現你的命令出錯了,你可以完全取消當前的命令(譯者注:是指尚未執行的命令)並從頭來過。要完成這個工作,你只需要輸入c並按回車: mysql> DROP DATABASEcmysql> L會完全忽略你剛才輸入的命令,並返回到提示符等待你的下一個命令。 你要退出MySQL客戶端程序時,你只需要輸入quit或者exit (這兩個命令是完全一樣的)。這是唯一不用以分號結尾就可以執行的命令。 mysql> quitBye 什麼是SQL? 程中我們用來告訴MySQL去做什麼的命令其實是一個叫結構化查詢語言(SQL)的規范的一部分。SQL中的命令也被稱之為查詢(在這篇教程中,我們會交替地采用這兩種稱呼)。 實現與絕大多數的數據庫的交互的標准語言,所以即使你將來不再使用MySQL,轉而使用Microsoft SQL Server,你會發現絕大多數命令是相同的。你必須理解SQL和MySQL的區別。MySQL是你正在使用的數據庫服務軟件。SQL是你用來實現和數據庫的交互的語言。 建立一個數據庫 Web主機提供商已經為你分配了一個用來工作的數據庫。你先耐心地等待一下,等一下我們會和你繼續討論下面的問題。如果你是在自己安裝的MySQL服務器上工作。執行下面的命令,很容易地你就可以建立一個數據庫了: mysql> CREATE DATABASE jokes; 庫的名字是jokes,這是為了與我們工作的例子一致。其實你可以給你的數據庫起任何你自己喜歡的名字。不過,如果你是在Web主機提供商的MySQL服務器上工作,它們可能已經為你建立了一個數據庫,你就沒法選擇數據庫的名字了。 已經有了一個數據庫,我們需要告訴MySQL我們想要使用這個數據庫。下面這個命令應該也不太難記: mysql> USE jokes; 以開始使用你的數據庫了。在你在其中添加數據表之前,這個數據庫將是空的,我們的第一步工作應該是建立一個數據表來保存我們的笑話。 建立一個數據表 遇到的SQL命令都是非常簡單的,但是因為數據表是比較靈活的,相應地建立它們的命令就要復雜得多了。建立數據表的基本格式是這樣的: mysql> CREATE TABLE ( ->