天天看點

《PHP和MySQL Web開發從新手到高手(第5版)》一2.5 建立表

本節書摘來自異步社群《php和mysql web開發從新手到高手(第5版)》一書中的第2章,第2.5節,作者【澳】kevin yank,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

php和mysql web開發從新手到高手(第5版)

目前為止,我們所遇到的sql指令都相當簡單。但是,表是如此具有靈活性。是以,需要一條較為複雜的指令才能建立它。這條指令的基本形式如下:

讓我們繼續讨論如圖2.1所示的joke表。你還記得吧,這個表有3列:id(一個數字)、joketext(笑話的文本)和jokedate(輸入笑話的日期)。以下是建立該表的指令:

看上去很費解是吧?讓我們分解一下:

**create table joke (

**

第一行相當簡單,它表示想要建立一個名為joke的新表。開始的括号“”,表示其後是一個清單,将會列出表中的各個列。

id int not null auto_increment primary key,

第二行表示我們想要一個名為id的列,其中包含了一個整數(int)。也就是說,這是一個完整的數字。該行剩下的部分則表示這個列的細節:

1.首先,在這個表中建立一個行的時候,這個列不能為空(not null)。

2.接下來,在向該表添加一個新的條目的時候,如果不想為該列指定一個值,我們希望mysql自動去選擇一個值,這個值即是在表中目前最高值的基礎上加1(auto_increment)。

3.最後,這個列充當表中的條目的一個唯一辨別符。是以,該列中的所有的值都必須是唯一的(primary key)。

**joketext text,

第三行非常簡單,它表示我們想要一個名為joketext的列,其中包含了文本(text)。

**jokedate date not null

第四行确定了最後一列,名為jokedate,它将包含一個不能為空(not null)的日期(date)。

) default character set utf8

結束圓括号“”表示表中的列的清單到此結束。default character set utf8告訴mysql,我們将在表中存儲utf-8編碼的文本。utf-8是web内容最常用的編碼。是以,對于要在web上使用的所有資料庫表,都應該使用utf-8編碼。

**engine=innodb

如上所示,這告訴mysql,使用哪個存儲引擎(storage engine)來建立這個表。

請把存儲引擎當作是檔案格式。當你建構一個web站點的時候,通常選擇對站點上的照片使用jpeg格式。但是,對于構成站點設計的圖像,請堅持使用png格式。這兩種格式浏覽器都能夠支援,不過,每種格式都有自己的優點和缺點。同樣,mysql也支援多種格式的資料庫表。

目前為止,對類似于我在本書中建構的web站點資料庫來說,innodb格式是最佳選擇。然而,較早的myisam格式是預設的格式。是以,我們必須告知mysql,期望它建立一個innodb表。

注意,我們為所建立的每一列都指定了一個特定的資料類型。id将包含整數,joketext将包含文本,jokedate将包含日期。mysql要求提前為每一列指定資料類型。稍後你将會看到,這有助于組織好資料,還允許我們用強有力的方式來比較列中的值。要了解mysql資料類型的清單,請參見附錄d。

現在,如果你正确地輸入了如上所示的指令并單擊go按鈕,phpmyadmin主視窗将确認查詢正确地執行了,并将建立你的第一個表。如果你犯了錄入錯誤,phpmyadmin将告訴你所輸入的查詢有一個問題,并且将嘗試指出它在了解你的意圖的時候在哪裡遇到了問題。

讓我們檢視新的表,并确認已正确地建立了它。在sql查詢視窗中輸入如下的指令,并且單擊go按鈕:

phpmyadmin應該會顯示如圖2.11所示的輸出。

《PHP和MySQL Web開發從新手到高手(第5版)》一2.5 建立表

這個清單,是你的資料庫(我們将其命名為ijdb)中的所有的表的清單。這個清單隻包含了一個表:我們所建立的joke表。是以,到目前為止,一切似乎都很好。讓我們使用一條describe查詢來進一步檢視這個joke表:

如圖2.12所示,該表中有3列(或字段)。因而,在這個結果表中有3行。雖然細節有點難以了解,但是如果你仔細看一下,應該能夠搞清楚它們的含義。不過,不必擔心。有更好的事情要做,諸如向表中添加一些笑話。

《PHP和MySQL Web開發從新手到高手(第5版)》一2.5 建立表

在做這件事情之前,我們還有一個任務:删除一個表。這個任務很簡單,就像用一條drop database指令删除一個資料庫一樣簡單。隻不過在這裡,phpmyadmin不會為你提供保護。除非你真的想要删除joke表,否則,不要對它運作這條指令。如果你真的想要删除它,那麼,準備好從頭開始建立joke表吧。