用PHP和MySQL構建一個數據庫驅動的網站三

摘要   在這一章,我們將集中學習如何使用結構化查詢語言(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。第二種方法是從https://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 ( ->

, ->

, -> … -> );   現在回到我們的例子“Jokes”表。這個表有三個數據列:ID(一個數字)、JokeText(笑話的正文)和JokeDate(加入的日期)。建立這個表的命令應該是這樣的: mysql> CREATE TABLE Jokes ( -> ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> JokeText TEXT, -> JokeDate DATE NOT NULL -> );   看上去很復雜,是吧?讓我們將它分解一下:   第一行是比較簡單的;它說明我們想要建立一個新的名為Jokes的數據表。   第二行說明我們需要一個數據列叫ID,這個列的類型應該是一個整數(INT)。這一行還定義瞭這個數據列的其他一些信息。首先,這一行不允許為空(NOT NULL)。第二,如果你沒有為一列指定一個值,MySQL會選擇使用一個比當前最大值大的值(AUTO_INCREMENT)。最後,這個數據列還是這數據表的唯一的標識符,所以這個數據列中的所有值都應該是不重復的(PRIMARY KEY)。   第三行是非常簡單的;這說明我們需要一個數據列叫JokeText,這個列的類型應該是一個文本(TEXT)。   第四行定義瞭我們的最後一列,列名是JokeDate,這個列的類型是日期型(DATE)這個列也不能為空(NOT NULL)。   請註意,我們在輸入SQL命令時,大小寫是完全自由的,但是在一個Unix-based系統下運行的MySQL服務,因為我們必須與MySQL數據目錄下的目錄和文件一致,當遇到數據庫名和表名時,我們必須區分大小寫。否則,MySQL是完全對大小寫不敏感的,隻有一種情況例外,在同一命令中多次出現的表名、列名以及其他名字必須在拼寫上完全一致

You May Also Like