標題:
8-2 篩選資料的SQL指令(8-2-1 要什麼?在那裡?)
[打印本頁]
作者:
小誌
時間:
2011-4-20 10:12
標題:
8-2 篩選資料的SQL指令(8-2-1 要什麼?在那裡?)
8-2 篩選資料的SQL指令
老闆:「我要買’SQL’」,猜一猜老闆會給拿給您什麼?老闆會拿給您一套微軟的「SQL」資料庫軟體!是老闆錯了嗎?不!老闆沒錯,是您的觀念錯了!不要誤以我們所說的「SQL」是微軟的「SQL Server」!
資料庫是一個儲存「大量」資訊的格式化檔案,當我們使用mysql_query()函數來提取資料時,我們操作的對象是「資料表」,不管資料表內的資料是否是您所需要的,每一筆資料都會被抓進來,您所得的資料都是未經過「篩選」的。如何在茫茫的資料叢林中找到您所需的資訊?那就必須透過SQL指令!
只要我們懂得一些淺顯易懂的口語化SQL指令,就可以讓資料庫篩選並提供我們所需要的資料,但前提是:必須懂得使用SQL指令!
作者:
小誌
時間:
2011-4-20 10:14
8-2-1 要什麼?在那裡?
「請幫我找一下關於’PHP’程式設計的書,應該在’電腦程式’的分類裡」,這句話您覺得很特別或很難理解嗎?如果不會,那筆者要恭喜您囉!您真是有學習SQL的天份!因為這句話的句型就是SQL語言的基本句子(其實就是SQL指令),這句話如果轉換為SQL的句子就是
「Select PHP From電腦程式」。
「Select … From …」就是SQL裡最基本的句型!「Select」(要什麼)與「From」(在哪裡),這基本的SQL句型作用於資料庫的「資料欄位」與「資料表」:
Select-From句型
Select 資料欄位 From 資料表
複製代碼
例如:我希望從「transcript(成績單)」資料表中取出「姓名」這個欄位的資料,則我就可以使用下列這個SQL句子:
Select 姓名 From transcript
複製代碼
上例只會取出資料表中的一個欄位資料,那可不可以一次從資料表中取出多個欄位的資料?當然可以!您可以選取多個欄位,但是欄位名稱與欄位名稱間必須使用「,」逗號隔開,例如從「transcript(成績單)」資料表中取出「姓名」與「學號」這兩個欄位的資料:
Select 姓名,學號 From transcript
複製代碼
上兩個範例所使用的Select-Form句型是最簡單的,可是有一個問題耶!如果我要將資料表內的所有欄位資料都列出來那該怎麼辦?很容易,您只要將您要選取的資料欄位以「*(星號)」代替即可:
Select * From transcript
複製代碼
「*(星號)」就代表了您要選取資料表內全部的欄位資料。
作者:
小誌
時間:
2011-4-20 10:18
變更欄位名稱
這裡所指的變更欄位名稱並不是更改資料庫內的欄位名稱喔!而是將取得的資料庫資料欄位以我們指定的名稱加以命名:
Select 欄位名稱 AS 自訂名稱 From 資料表
複製代碼
上式的意思是說:從資料庫中選取某個「欄位名稱」的資料,但是,取得的資料放在我們『自訂名稱』的欄位裡。例如,我們要從「studentlist(通訊錄)」資料表中選取「姓名」與「家長」欄位的資料,但是,希望在網頁中顯示的欄位抬頭名稱是『Name』與『Father』,則我們可以將SQL指令撰寫如下:
Select 姓名 As Name,家長 As Father From 通訊錄
複製代碼
將mysql_query()函數的的link_identifier參數指定如上式的SQL指令,即可見到下圖的結果:(範例ex08_08.php)
[attach]5639[/attach]
圖8-11 範例ex08_08.php。
變更欄位名稱的格式還有另外一種,不過,這種方式大家比較少用,而且MySQL並不支援這種用法,用於MS SQL則沒有問題:
Select 自訂名稱=欄位名稱 From 資料表
複製代碼
例如:
Select Name=姓名,Father=家長 From 通訊錄
複製代碼
作者:
小誌
時間:
2011-4-20 10:19
欄位運算
[attach]5640[/attach]
圖8-12 「transcript」資料表內容。
如果想將自資料庫欄位取回的資料做運算,並將運算後的結果放置到另一個『自訂名稱』的欄位裡,也是可以利用「As」來做到喔!例如在我們的範例資料庫STUSENTS裡有一個學生「成績單」的資料表,其內容如如圖8-12所示。
在「transcript(成績單)」的資料表內,記錄著學生的「國文」、「英文」、「數學」三項科目的成績,若現在要將三個科目的分數加總(總分),並將加總後的分數放置到自訂名稱的「總分」欄位裡,則我們可以將SQL指令撰寫如下:
Select 姓名,國文,英文,數學, 國文+英文+數學 As 總分 From transcript
複製代碼
將mysql_query()函數的的link_identifier參數指定如上式的SQL指令,即可見到下圖的結果:(範例ex08_10.php)
[attach]5641[/attach]
圖8-13 範例ex08_10.php,新增總分欄位。
作者:
pix756
時間:
2012-8-14 09:47
小誌大大,最近我學到這個章節,請問範例ex08_08.php這個檔案要從哪裡去下載。
作者:
小誌
時間:
2012-8-14 17:00
小誌大大,最近我學到這個章節,請問範例ex08_08.php這個檔案要從哪裡去下載。
pix756 發表於 2012-8-14 09:47
http://forum.twbts.com/thread-3300-1-7.html
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)