🚩SQL的五十道練習 學習紀錄
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
✏1.基本語法
SELECT
選取關鍵字(欄位) 查詢{選取多個 a,b,c 用逗號隔開}
FROM
從哪個資料表
LIMIT
限制顯示筆數
DISTINCT
省略查詢結果中重複的資料,只顯示類別不會有重複的觀測值
✏2.函數
📍1 通用函數(作用於水平方向)
COALESCE
: 將NULL替換成指定常數,或'字串'
(空白明確表示該值被設定為空白,而 NULL 則表示未提供該值或該值未知)
1.透過NULLIF 將指定字符轉換成NULL
2.透過when設定條件
📍2 聚合函數(作用於垂直方向)
- AVG(X) 平均數
- COUNT(X) 資料筆數
- MAX(X) 最大值
- MIN(X) 最小值
- SUM(x) 總和
✏3.排序及篩選
📍1 排序
- 以
ORDER BY
排序查詢結果
ORDER BY
ASC/DESC( ASC是遞增 /DESC是遞減,預設遞增)
- 可以使用多個變數做排序
- 結合
ORDER BY
與 LIMIT
,就可以進行「前 m 高」或「前 m 低」的資料分析(資料沒有重複的前提下)
📍2 篩選
WHERE
: 能夠以條件(Conditions)作為篩選觀測值的依據
- 條件有多個的時候,必須使用邏輯運算符結合這些件
- AND 結合條件的交集。
- BETWEEN 結合數值比較條件的交集。
- OR 結合條件的聯集。
- IN 結合條件的聯集。(OR 結合比較條件在字串型態時,更推薦使用 IN)
- NOT反轉真假
-
LIKE
: 對文字類型的變數撰寫條件時,還能夠使用具備特徵比對(Pattern matching)性質
使用 LIKE 比較運算符的時候需要搭配萬用字元(Wildcards)
萬用字元 |
作用描述 |
% |
表示任意文字,包含空字串 |
_ |
表示剛好一個文字 |
-
NULL 遺漏值(或稱空值)不適用基礎比較運算符,要判斷是否為遺漏值,必須使用 IS NULL
作為比較運算符
✏4. 條件邏輯 (CASE
語法)
- 使用 CASE 衍生計算欄位,能夠運用在篩選資料
- 如果在某個觀測值發生 condition_1 與 condition_2 都判斷為真的情況下,會以 result_1 表示,所以
當條件沒有互斥的時候,撰寫 CASE 要特別注意順序
- 如果不想特別注意順序,可以將條件設計為互斥(suggest)
- CASE 除了搭配 SELECT、ORDER BY 使用,亦能夠搭配 WHERE 使用
✏5. 分組聚合 (GROUP BY 語法)
- 分組 GROUP BY 的功能可以視為 DISTINCT 與 ORDER BY 兩者同時作用
- 遇到種類很多又有重複時,想要計算個別平均,可以透過GROUP BY 就不用DISTINCT篩選出類別再分別計算
- 若希望篩選具合過後的資料,可以使用作用在「分組聚合結果」的
HAVING
。
✏6. 子查詢&合併查詢
📍1 子查詢
📍2 垂直合併
📍3 水平合併
✏7.虛擬資料表
建立完就可以做使用
- 虛擬資料表(Views),也被稱為檢視表
- 相較於使用過後即被捨棄的子查詢,虛擬資料表會被保存在資料庫中。
- 虛擬資料表就等同於資料表的存在。
- 實際上虛擬資料表中儲存的並不是資料,而是一段
SELECT
敘述。
- 以
DROP VIEW
即可刪除虛擬資料表
✏8.建立更新與刪除資料表
- 以
CREATE TABLE
建立資料表
- 以
INSERT INTO
建立觀測值
實務上先檢查所有欄位及資料準備就緒無須增減後,再INSERT為佳
- 以
UPDATE SET WHERE
更新觀測值
- 以
DELETE FROM
刪除觀測值
若刪除資料表的「所有」觀測值
- 以
DROP TABLE
刪除資料表