iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
影片教學

睡醒來聽 PHP 與 MySQL系列 第 23

[睡醒來聽 PHP 與 MySQL] DAY23 結構化查詢語言(進階)

  • 分享至 

  • xImage
  •  

Yes

Welcome 歡迎來到「睡醒來聽 PHP 與 MySQL」系列!

DAY23 今天要學甚麼?今天分享結構化查詢語言(進階)

🔶章節:
🔹[開頭]
🔹[限制顯示數量]
🔹[LIMIT子句的使用]
🔹[起始位置查詢]
🔹[合併資料表]
🔹[合併的使用時機]
🔹[INNER JOIN]
🔹[LEFT JOIN]
🔹[RIGHT JOIN]
🔹[聚合函數]
🔹[總結]

如果影片中不清楚,需要補充的地方我會再添加到這邊~
👆教學中的[練習]程式碼一併附上,影片中會有每組的講解、說明更清楚👆


LIMIT子句的使用

orders資料表
https://ithelp.ithome.com.tw/upload/images/20231008/20152215dcJQUNwHZy.png

使用LIMIT子句查詢最近的5筆訂單

SELECT * FROM orders ORDER BY 訂單編號 DESC LIMIT 5

https://ithelp.ithome.com.tw/upload/images/20231008/20152215CTKaJ86fjA.png

指定起始位置查詢

假設我們希望在訂單表中顯示3筆資料,並從第4筆資料開始顯示。

SELECT * FROM orders ORDER BY 訂單編號 ASC LIMIT 3 OFFSET 3;

https://ithelp.ithome.com.tw/upload/images/20231008/20152215VvYqG76uz5.png


合併資料表

使用JOIN進行資料表合併

我們使用了INNER JOIN(因為JOIN默認為INNER JOIN)。我們將「客戶表」和「訂單表」進行合併,並通過客戶編號進行連接。

SELECT 客戶表.客戶姓名, 訂單表.訂單編號, 訂單表.訂單日期
FROM 客戶表
JOIN 訂單表 ON 客戶表.客戶編號 = 訂單表.客戶編號;

合併資料表-情境練習

假設我們有兩個資料表,一個是"employees"表,包含員工姓名、員工編號以及所屬部門編號。
https://ithelp.ithome.com.tw/upload/images/20231008/20152215EMHe3YZqil.png
另一個是"departments"表,包含部門名稱以及部門編號。
https://ithelp.ithome.com.tw/upload/images/20231008/20152215eMH5mxxIZN.png

1.如果我們想獲取所有員工的部門資訊,但只顯示已分配到部門的員工,我們會使用INNER JOIN。

SELECT Employees.Name, Departments.DepartmentName
FROM Employees
INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

查詢結果:
https://ithelp.ithome.com.tw/upload/images/20231008/20152215hGyAnxuGmQ.png

2. 如果我們想獲取所有員工的資訊,不管他們是否分配到部門,並顯示已分配到部門的員工,我們會使用LEFT JOIN。

SELECT Employees.Name, Departments.DepartmentName
FROM Employees
LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

查詢結果:
https://ithelp.ithome.com.tw/upload/images/20231008/20152215qCIPTHn4NR.png

3. 如果我們想獲取所有部門的資訊,不管是否有員工分配到該部門,我們會使用RIGHT JOIN。

SELECT Employees.Name, Departments.DepartmentName
FROM Employees
RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

查詢結果:
https://ithelp.ithome.com.tw/upload/images/20231008/20152215umcvsdZHQz.png


聚合函數

使用同一張名為「銷售表」的資料表進行查詢,並進行總數、平均值、總和、最大值和最小值的計算。

order23資料表:
https://ithelp.ithome.com.tw/upload/images/20231008/201522152tIAzY6vLh.png

計算總數

SELECT COUNT(*) AS 總銷售筆數 FROM order23;

使用 AS 關鍵字可以為查詢結果中的列指定別名,以使結果更具可讀性。
👉總銷售筆數:5

計算平均值

SELECT AVG(銷售金額) AS 平均銷售金額 FROM order23;

👉平均銷售金額: 150

計算總和

SELECT SUM(銷售金額) AS 總銷售額 FROM order23;

👉總銷售額: 750

查詢最大值和最小值

SELECT MAX(銷售金額) AS 最高銷售金額, MIN(銷售金額) AS 最低銷售金額 FROM order23;

👉最高銷售金額: 200
👉最低銷售金額: 100


使用多種運算方法,可以有效取得當前目標需求、可利用的資訊。
在SQL學習路上~ 一起fight !💪💪
/images/emoticon/emoticon29.gif


上一篇
[睡醒來聽 PHP 與 MySQL] DAY22 結構化查詢語言(基本)
下一篇
[睡醒來聽 PHP 與 MySQL] DAY24 結構化查詢語言(修改、新建、刪除)
系列文
睡醒來聽 PHP 與 MySQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言