PHP入門講義
要讀出MySQL的資料,那您就要用select這指令。
SELECT 查詢內容 [FROM `資料表名稱` 篩選條件]「篩選條件」有以下幾個東西!注意喔!由上到下就是其語法的先後順序喔!您可不能把LIMIT拿到WHERE的前面,那是錯誤的喔!
[where 篩選條件]
[group by 欄位名稱][having group的篩選條件]
[order by {unsigned_integer | 欄位名稱 | formula} [asc | desc]
,...]
[limit [起點,] 筆數]
- select * from `money`; 查詢money資料表中所有欄位的所有資料。則會把money資料表中的東西,通通列出來。
- select `name` , `salary` from `money`; 查詢money資料表中name和salary欄位中的所有資料。則只會列出每人的姓名(name)以及薪水(salary)的資料,其餘的資料,如發薪 日是不會列出來的。
- select `salary` , `date` from `money` where `name` = 'tad' ; 查詢money資料表中,「符合name欄位為tad」的salary和date欄位資料。也就是說,要找出資料庫中名字(name)為tad的薪水 (salary)和發薪日(date)的資料。
- select `salary` , `date` from `money` where `name` = 'tad' and `salary` = '1000'; 篩選條件可以不只是一個,您可以用and(和)、or(或)...設很多個。
- select `salary` from `money` group by `salary` ; 查詢money資料表中,以相同的薪水為群組(group by salary),列出薪水欄位的資料。group by會把該欄位相同的值當作一個群組。
- select `salary` , count(`salary`) from `money` group by `salary` ; 通常,我們用這種方式可以了解資料庫中,某種資料的分類情形,這是相當實用的,底下我們利用MySQL的count()函數, 配合group by更能求出該群組的數目,如此,您便能得知,哪一種群組,各有多少人,我們留言板中,幾月份有幾個人留言,亦可利用此種方式算出。
-
select `name` , max(`salary`) from `money` group by `name` having max(`salary`) > 3500 ;
這一行的意思就是,從各個name的群組(group by name)中,列出其中薪水最高max(salary)者的姓名以及其薪水。於是,首先資料庫會把姓名分四個群組,然後,根據having max(salary)>3500,他會把這四個群組中,最高薪有超過1500的人篩選出來
請注意HAVING的角色和WHERE很像!只不過WHERE是給SELECT用來篩選,而HAVING則是專給GROUP BY做篩選用!也就是說,沒有GROUP BY就沒有HAVING! - select `date` , `name` , `salary` from `money` order by `date` ; 查詢money資料表中date,name,salary欄位的資料,並且以date欄位為準來排序(order by date)。
- select `date` , `name` , `salary` from `money` order by `date` desc; 正常來說,若是您使用「order by欄位名稱」的時候,沒指定用asc(小至大)或desc(大至小)來排,那MySQL會將資料自動從小排到大,也就是asc的排法,若是想從大排到小 怎麼辦?很簡單,加入desc就行了。
- select `name` , `salary` from `money` limit 0,5; 用 limit來限制列出資料的筆數是很常見的用法,尤其在做資料分頁的時候更是常用!limit後面有兩個數字,很多人會誤以為是「limit 起點,終點」,其實,這是錯的!第一個數字代表的是「筆數起點」沒錯,但第二個數字是「列出筆數」!也就是說limit 0,5就是從第0筆資料開始讀,一次讀5筆的意思!
- COUNT(expr):計算數目,COUNT(*)非常快,可以算出所有的資料有幾筆
- AVG(expr):計算GROUP的平均值
- MIN(expr):找出最小值
- MAX(expr):找出最大值
- SUM(expr):總和
- $row=mysql_fetch_array() 從資料庫取得的陣列,索引值可以是數字或字串(即欄位名稱)。
$row[0] 或 $row["title"] - $row=mysql_fetch_assoc() 從資料庫取得的陣列,索引值只能是字串(關聯索引)。
$row[0] - $row=mysql_fetch_row() 從資料庫取得的陣列,索引值只能是數字(數字索引)。
$row["title"]