SQL 查詢(SQL Query)的基本語法

2019/04/21 919 0 網站技術 , 伺服器 , 資料庫 , 學業筆記 , 學術詞彙 , SQL

SQL 全名結構化查詢語言Structured Query Language),是一種特定目的程式語言,用於管理關聯式資料庫管理系統,學習它將可以協助我們管理資料庫,本篇文章主要抽出「SQL 查詢(SQL Query)」的部分來做整理與彙整 📝,沒有很詳細的範例,為萌芽站長的快速筆記,如果能幫助您學習是我的榮幸!參考多方資料,參考資料列於文末,需要的人也可以參考這些優良資料唷!😉 有任何問題也都歡迎在留言區提出!🙂 本文共花費四小時整理。

▲ 本文首圖,3D 資料庫由萌芽站長使用 3D 小畫家繪製而成。

📝 關於資料庫的基本知識,您可以參考本文:資料庫基本知識 & 筆記

🗂 本文章節目錄

🔍 查詢的基本架構
一、SELECT & FROM
二、JOIN
三、WHERE
四、GROUP BY & HAVING
五、ORDER BY
六、LIMIT & UNION
七、聚合函數

正文開始!讓我們一起學習 SQL 查詢的語法與技巧吧!

🔍 查詢的基本架構

SELECT* | DISTINCT | Top n】 <欄位串列>
FROM 資料表名稱{<別名>} 【JOIN 資料表名稱】
WHERE <條件式>】
GROUP BY <群組欄位>】
HAVING <群組條件>】
ORDER BY <欄位> [ASC | DESC]】
LIMIT <數目>】

【括號】的部份可以省略

一、SELECT & FROM

➡ SELECT 其後接所要列出的欄位名稱。
* | DISTINCT | Top n
1️⃣ * 表示列印出所有的欄位(欄位1,欄位2,…,欄位n)
2️⃣ DISTINCT 可從資料表中選擇不重複的資料。它是利用先排序來檢查是否有重複。
3️⃣ Top n 可在資料表中取出名次排序前n筆的記錄。

➡ FROM 後接資料表名稱,可以接多個資料表。

二、JOIN

JOIN 可將不同資料表之間欄位的關聯性來結合多資料表的查詢。
1️⃣ INNER JOIN(內部連接)必需指定等值連接的條件,查詢結果只會傳回符合連接條件的資料。
Ex: SELECT 客戶.名稱, 訂單.訂單編號
FROM 客戶 INNER JOIN 訂單
ON 客戶.客戶編號=訂單.客戶編號;
2️⃣ LEFT JOIN(左外部連接)左側資料表的所有資料都會加入到查詢結果中,就算右側資料表中的連接欄位沒有符合的值也一樣。
3️⃣ RIGHT JOIN(右外部連接)右側資料表的所有資料都會加入到查詢結果中,就算左側資料表中的連接欄位沒有符合的值也一樣。
4️⃣ FULL JOIN(全部外部連接)會傳回左右資料表中所有的資料,不論是否符合連接條件。
5️⃣ NATURAL JOIN(自然連接)NATURAL JOINNATURAL LEFT JOINNATURAL RIGHT JOIN,兩資料表之間同名的欄位會被自動結合在一起。

三、WHERE

WHERE 後接條件式(包含各種運算子)
1️⃣ IS NULLIS NOT NULL Ex: 成績 IS NOT NULL
2️⃣ LIKE 模糊相似條件 Ex: 地址 LIKE '桃園%'
➡「_」比對一個字元/「%」比對多個字元/「#」比對一個數字/[^A-E] 代表排除 A 到 E 的任何單一字元
3️⃣ IN 集合條件 Ex: 課程編號 IN ('A001','A002')
4️⃣ Between…And 範圍 Ex: 成績 Between 60 And 70
5️⃣ AND (且)/OR (或)/NOT (反) Ex: 成績>=60 And 課程編號='B005' Ex: Not 成績>=60
6️⃣ = (等於)/<> (不等於)/< (小於)/<= (小於等於)/> (大於)/>= (大於等於) Ex: 成績>=60

四、GROUP BY & HAVING

GROUP BY 欄位1,欄位2,…,欄位n [HAVING 條件式]
1️⃣ GROUP BY 可單獨存在,它將數個欄位組合起來。
2️⃣ [HAVING 條件式] 它不可以單獨存在,可將數個欄位中加以有條件的組合起來。與 WHERE 最大的差別是可使用聚合函數
Ex:「選課資料表」中查詢每位學生選幾門課
SELECT 學號, Count(*) AS 選科目數 FROM 選課資料表 GROUP BY 學號

五、ORDER BY

ORDER BY 欄位1, 欄位2, …, 欄位n [ASC|DESC] 它是依照某一個欄位來進行排序。例如:
1️⃣ ORDER BY 成績 ASC ← 可以省略 (由小至大)
2️⃣ ORDER BY 成績 DESC ← 不可以省略 (由大至小)

六、LIMIT & UNION

LIMIT 可用來限制查詢資料筆數。
UNION 運算子可將兩個(以上) SQL 查詢結果合併起來,也就是做垂直結合(合併多個資料表中的記錄),存在於第一個查詢結果集或第二個查詢結果集中,就會被取出。UNION ALL 則不管資料是否重複都會列出。

七、聚合函數

1️⃣ Count(*) 計算列數/Count(欄位名稱) 計算某欄位列的總數(不含 NULL 值)
Ex: SELECT Count(*) AS 全校人數 FROM 學生資料表
2️⃣ Avg (計算平均)/Sum (計算總合)/Max (計算最大值)/Min (計算最小值)

✎ 參考資料 · References

贊助廣告 ‧ Sponsor advertisements

留言區 / Comments

萌芽論壇