上一篇我只講到插入、更新與刪除語法,但是唯獨查詢這個語法沒有講到,這是因為查詢的語法其實可以有非常多種組合,所以我才特別獨立出一篇來做介紹,那麼廢話就不多說,讓我們來了解為什麼我會拆出這一篇文章吧!
首先先讓我們來學習最基礎 & 最簡單的語法,也就是查詢資料表內所有的資料欄位資料:
SELECT * FROM hw_table;
※ 指令說明: SELECT * FROM [資料表名稱];
如果你是依照上一篇一路操作下來,那正常來講查詢的結果應該只會有一筆 ↓
接下來這邊開始會稍微有有一點難,但是也是查詢中的重點,也就是條件式查詢,通常條件式查詢都會帶上 where
並且在這後面加上條件,那麼依照所你帶上的條件不同,就可以得到不同的答案。
但是在實作之前,我會建議先輸入以下指令,快速塞入幾筆範例資料,這樣子我們後面才可以看出成效:
INSERT INTO hw_table (name, height, weight) VALUES ('王小明', 177.6, 70.5),('王小明', 156.6, 47.5),('陳春嬌', 172.6,46.7);
所以目前來講我們目前的資料表裡面應該會有四筆資料 ↓
首先是第一個條件式查詢,假設我們今天想要找只要是名子叫做王小明的人,那麼語法就可以這樣撰寫:
SELECT * FROM hw_table WHERE name='王小明';
※ 指令說明: SELECT * FROM [資料表名稱] WHERE [條件];
執行後,就可以看到查詢結果只會跳出名子叫王小明的人 ↓
如果你希望查詢的結果,可以更聚焦一點(更詳細),假使你今天只想找體重 70.5 公斤然後名子剛好叫王小明的的人呢?此時我們可以帶上 and
來附帶其他條件進而達到我們要的查詢結果:
SELECT * FROM hw_table WHERE name='王小明' and weight='70.5';
※ 指令說明: SELECT * FROM [資料表名稱] WHERE [條件] and [條件];
這樣你就可以找到姓名叫王小明而且體重是 70.5 公斤的人 ↓
當今天如果我們希望可以同時查詢名子叫陳春嬌以及王小明時,就可以這樣寫:
SELECT * FROM hw_table WHERE name='陳春嬌' OR name='王小明';
※ 指令說明: SELECT * FROM [資料表名稱] WHERE [條件] or [條件];
當然如果其中一個不是不存在的,也不會影響查詢執行狀況,它會兩筆都列出來,所以說假使今天沒有陳春嬌這個人,但是有王小明,那麼就會只列出王小明。
最後這邊來針對條件式查詢做一下補充,條件式查詢其實還可以加入運算子(=
、 >
、 <
、 !=
),那麼什麼是運算子呢?讓我們直接來看看範例吧。
假設我今天想要找身高 大於 170 公分 的人,那就可以這樣寫:
SELECT * FROM hw_table WHERE height > 170;
執行後,我們就可以找到兩個身高大於 170 的人 ↓
剩下的運算子條件其實大同小異,所以我就不多做示範了,因為寫法都是雷同的。
那如果我今天希望在查詢時,只想查詢第 3 筆 ~ 第 4 筆的資料呢?那麼就會使用 LIMIT
語法:
SELECT * FROM hw_table LIMIT 2,4;
※ 指令說明: SELECT * FROM [資料表名稱] LIMIT [值1],[值2];
最後讓我們來講講排序,排序是一個非常常見的做法,首先排序最主要分為兩種排序模式
通常排序時,都會使用到一個語法,也就是 ORDER BY
,預設的排序是遞增排序,這邊就讓我們用身高來嘗試做排序看看:
SELECT * FROM hw_table ORDER BY height;
※ 指令說明: SELECT * FROM [資料表名稱] ORDER BY [欄位];
你可以看到身高由小排至大 ↓
但是我個人是會習慣寫死,避免出現一些奇怪的問題,那遞增排序完整語法如下:
SELECT * FROM hw_table ORDER BY height ASC;
※ 指令說明: SELECT * FROM [資料表名稱] ORDER BY [欄位] ASC;
當然結果也是會一樣 ↓
那麼遞減排序呢?遞減排序只需要將原本前面講的 ASC
換成 DESC
即可:
SELECT * FROM hw_table ORDER BY height DESC;
※ 指令說明: SELECT * FROM [資料表名稱] ORDER BY [欄位] DESC;
這樣就可以看到由大至小囉~
最後讓我們整理一下本篇所講到的 SQL 指令吧~
操作功能 | SQL 語法 |
---|---|
查詢全部欄位資料 | SELECT * FROM [資料表名稱]; |
條件式查詢 | SELECT * FROM [資料表名稱] WHERE [條件]; |
條件式查詢 AND | SELECT * FROM [資料表名稱] WHERE [條件] and [條件]; |
條件式查詢 OR | SELECT * FROM [資料表名稱] WHERE [條件] or [條件] |
條件式查詢(運算子) | SELECT * FROM [資料表名稱] WHERE [欄位] > [條件]; |
查詢特定筆數的資料 | SELECT * FROM [資料表名稱] LIMIT [值1],[值2]; |
查詢結果遞增排序 | SELECT * FROM [資料表名稱] ORDER BY [欄位] ASC; |
查詢結果遞減排序 | SELECT * FROM [資料表名稱] ORDER BY [欄位] DESC; |
本文同時發表於:https://hsiangfeng.github.io/php/20190906/241727046/