iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
1
Modern Web

從基礎學習 ThinkPHP系列 第 5

Day5-從基礎學習 ThinkPHP-基礎 MySQL 學習-資料篇(2)

  • 分享至 

  • xImage
  •  

前言

上一篇我只講到插入、更新與刪除語法,但是唯獨查詢這個語法沒有講到,這是因為查詢的語法其實可以有非常多種組合,所以我才特別獨立出一篇來做介紹,那麼廢話就不多說,讓我們來了解為什麼我會拆出這一篇文章吧!

查詢全部欄位資料

首先先讓我們來學習最基礎 & 最簡單的語法,也就是查詢資料表內所有的資料欄位資料:

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 [條件];

執行後,就可以看到查詢結果只會跳出名子叫王小明的人 ↓

王小明

條件式查詢 AND

如果你希望查詢的結果,可以更聚焦一點(更詳細),假使你今天只想找體重 70.5 公斤然後名子剛好叫王小明的的人呢?此時我們可以帶上 and 來附帶其他條件進而達到我們要的查詢結果:

SELECT * FROM hw_table WHERE name='王小明' and weight='70.5';

※ 指令說明: SELECT * FROM [資料表名稱] WHERE [條件] and [條件];

這樣你就可以找到姓名叫王小明而且體重是 70.5 公斤的人 ↓

可以看到搜尋出來的結果有淡淡的橘框

條件式查詢 OR

當今天如果我們希望可以同時查詢名子叫陳春嬌以及王小明時,就可以這樣寫:

SELECT * FROM hw_table WHERE name='陳春嬌' OR name='王小明';

※ 指令說明: SELECT * FROM [資料表名稱] WHERE [條件] or [條件];

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];

查詢特定筆數

查詢結果排序

最後讓我們來講講排序,排序是一個非常常見的做法,首先排序最主要分為兩種排序模式

  • 遞增排序 (ASC)
  • 遞減排序 (DESC)

查詢結果遞增排序

通常排序時,都會使用到一個語法,也就是 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/


上一篇
Day4-從基礎學習 ThinkPHP-基礎 MySQL 學習-資料篇(1)
下一篇
Day6-從基礎學習 ThinkPHP-安裝 ThinkPHP 安裝
系列文
從基礎學習 ThinkPHP31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言