麻辣家族討論版版's Archiver

小誌 發表於 2011-4-20 10:12

8-2 篩選資料的SQL指令(8-2-1 要什麼?在那裡?)

[color=DarkRed][size=4][b]8-2   篩選資料的SQL指令[/b][/size][/color]
老闆:「我要買’SQL’」,猜一猜老闆會給拿給您什麼?老闆會拿給您一套微軟的「SQL」資料庫軟體!是老闆錯了嗎?不!老闆沒錯,是您的觀念錯了!不要誤以我們所說的「SQL」是微軟的「SQL Server」!

資料庫是一個儲存「大量」資訊的格式化檔案,當我們使用mysql_query()函數來提取資料時,我們操作的對象是「資料表」,不管資料表內的資料是否是您所需要的,每一筆資料都會被抓進來,您所得的資料都是未經過「篩選」的。如何在茫茫的資料叢林中找到您所需的資訊?那就必須透過SQL指令!

只要我們懂得一些淺顯易懂的口語化SQL指令,就可以讓資料庫篩選並提供我們所需要的資料,但前提是:必須懂得使用SQL指令!

小誌 發表於 2011-4-20 10:14

[size=4][color=DarkRed][b]8-2-1   要什麼?在那裡?[/b][/color][/size]
「請幫我找一下關於’PHP’程式設計的書,應該在’電腦程式’的分類裡」,這句話您覺得很特別或很難理解嗎?如果不會,那筆者要恭喜您囉!您真是有學習SQL的天份!因為這句話的句型就是SQL語言的基本句子(其實就是SQL指令),這句話如果轉換為SQL的句子就是
「Select PHP From電腦程式」。

「Select … From …」就是SQL裡最基本的句型!「Select」(要什麼)與「From」(在哪裡),這基本的SQL句型作用於資料庫的「資料欄位」與「資料表」:
[color=Magenta]Select-From句型[/color][code]Select  資料欄位  From 資料表[/code]例如:我希望從「transcript(成績單)」資料表中取出「姓名」這個欄位的資料,則我就可以使用下列這個SQL句子:[code]Select 姓名 From transcript[/code]上例只會取出資料表中的一個欄位資料,那可不可以一次從資料表中取出多個欄位的資料?當然可以!您可以選取多個欄位,但是欄位名稱與欄位名稱間必須使用「,」逗號隔開,例如從「transcript(成績單)」資料表中取出「姓名」與「學號」這兩個欄位的資料:[code]Select 姓名,學號 From transcript[/code]上兩個範例所使用的Select-Form句型是最簡單的,可是有一個問題耶!如果我要將資料表內的所有欄位資料都列出來那該怎麼辦?很容易,您只要將您要選取的資料欄位以「*(星號)」代替即可:[code]Select * From transcript[/code]「*(星號)」就代表了您要選取資料表內全部的欄位資料。

小誌 發表於 2011-4-20 10:18

[color=RoyalBlue][size=3][b]變更欄位名稱[/b][/size][/color]
這裡所指的變更欄位名稱並不是更改資料庫內的欄位名稱喔!而是將取得的資料庫資料欄位以我們指定的名稱加以命名:[code]Select  欄位名稱 AS 自訂名稱  From 資料表[/code]上式的意思是說:從資料庫中選取某個「欄位名稱」的資料,但是,取得的資料放在我們『自訂名稱』的欄位裡。例如,我們要從「studentlist(通訊錄)」資料表中選取「姓名」與「家長」欄位的資料,但是,希望在網頁中顯示的欄位抬頭名稱是『Name』與『Father』,則我們可以將SQL指令撰寫如下:[code]Select  姓名 As Name,家長 As Father  From  通訊錄[/code]將mysql_query()函數的的link_identifier參數指定如上式的SQL指令,即可見到下圖的結果:(範例ex08_08.php)
[attach]5639[/attach]
圖8-11  範例ex08_08.php。

變更欄位名稱的格式還有另外一種,不過,這種方式大家比較少用,而且MySQL並不支援這種用法,用於MS SQL則沒有問題:[code]Select  自訂名稱=欄位名稱  From 資料表[/code]例如:[code]Select  Name=姓名,Father=家長 From 通訊錄[/code]

小誌 發表於 2011-4-20 10:19

[color=RoyalBlue][size=3][b] 欄位運算[/b][/size][/color]
[attach]5640[/attach]
圖8-12   「transcript」資料表內容。

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

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

[quote]小誌大大,最近我學到這個章節,請問範例ex08_08.php這個檔案要從哪裡去下載。
[size=2][color=#999999]pix756 發表於 2012-8-14 09:47[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=42341&ptid=3204][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]


    [url]http://forum.twbts.com/thread-3300-1-7.html[/url]

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供