Board logo

標題: 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句型
  1. Select  資料欄位  From 資料表
複製代碼
例如:我希望從「transcript(成績單)」資料表中取出「姓名」這個欄位的資料,則我就可以使用下列這個SQL句子:
  1. Select 姓名 From transcript
複製代碼
上例只會取出資料表中的一個欄位資料,那可不可以一次從資料表中取出多個欄位的資料?當然可以!您可以選取多個欄位,但是欄位名稱與欄位名稱間必須使用「,」逗號隔開,例如從「transcript(成績單)」資料表中取出「姓名」與「學號」這兩個欄位的資料:
  1. Select 姓名,學號 From transcript
複製代碼
上兩個範例所使用的Select-Form句型是最簡單的,可是有一個問題耶!如果我要將資料表內的所有欄位資料都列出來那該怎麼辦?很容易,您只要將您要選取的資料欄位以「*(星號)」代替即可:
  1. Select * From transcript
複製代碼
「*(星號)」就代表了您要選取資料表內全部的欄位資料。
作者: 小誌    時間: 2011-4-20 10:18

變更欄位名稱
這裡所指的變更欄位名稱並不是更改資料庫內的欄位名稱喔!而是將取得的資料庫資料欄位以我們指定的名稱加以命名:
  1. Select  欄位名稱 AS 自訂名稱  From 資料表
複製代碼
上式的意思是說:從資料庫中選取某個「欄位名稱」的資料,但是,取得的資料放在我們『自訂名稱』的欄位裡。例如,我們要從「studentlist(通訊錄)」資料表中選取「姓名」與「家長」欄位的資料,但是,希望在網頁中顯示的欄位抬頭名稱是『Name』與『Father』,則我們可以將SQL指令撰寫如下:
  1. 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則沒有問題:
  1. Select  自訂名稱=欄位名稱  From 資料表
複製代碼
例如:
  1. Select  Name=姓名,Father=家長 From 通訊錄
複製代碼

作者: 小誌    時間: 2011-4-20 10:19

欄位運算
[attach]5640[/attach]
圖8-12   「transcript」資料表內容。

如果想將自資料庫欄位取回的資料做運算,並將運算後的結果放置到另一個『自訂名稱』的欄位裡,也是可以利用「As」來做到喔!例如在我們的範例資料庫STUSENTS裡有一個學生「成績單」的資料表,其內容如如圖8-12所示。

在「transcript(成績單)」的資料表內,記錄著學生的「國文」、「英文」、「數學」三項科目的成績,若現在要將三個科目的分數加總(總分),並將加總後的分數放置到自訂名稱的「總分」欄位裡,則我們可以將SQL指令撰寫如下:
  1. 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/)