要讀出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的人篩選出來
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筆的意思!