SQL指令語法速查手冊(二)

運算子的優先順序

優先順序運算子
1*、/、%
2+、-
3=、>、>=、<、<=、<>、!=
4&、|、^、~
5NOT
6AND
7BETWWEN、IN、LIKE、OR

「%」萬用字元應用

說明
LIKE 透過「%」萬用字元有三種常用用法:
1.透過xxx開頭:LIKE'xxx%'
2.xxx在字串中:LIKE'%xxx%'
3.xxx在字尾:LIKE'%xxx'

「_」萬用字元

說明
「_」萬用字元是一個匹配單一字元的萬用字元,「%」萬用字元是可以匹配零至多個的字元,但是「_」萬用字元僅僅只能匹配一字,是相當嚴格。

例如
價格要搜尋三位數的字串時,可能就會透過
語法(price LIKE'___') 三個_
以下則是搜尋商品名稱有5個字元的資料
select * from store where name LIKE'_____'; 五個_

欄位別名

語法
欄位 別名

範例
SELECT name,weight/((height/100)*(height/100)) BMI FROM student
篩選 name 跟 BMI(是由方程式欄位設別名為BMI)從 student 資料表出來。

指定遞增、遞減排序

語法
ORDER BY (指定欄位) (ASC遞增/DESC遞減)

指定多欄位排序

語法
ORDER BY (指定欄位) (ASC/DESC),
(指定欄位) (ASC/DESC)
多個欄位的排序首先對指定的第一個欄位來進行排序,再對下一個指定的欄位進行排序,依此類推。

將資料輸出以群組化彙總

SQL不僅僅提供查詢計算的功能,也能夠將資料表特定欄位內的值群組進行彙總。群組化的意思是將欄位內相同的值集合起來分為各個群組,並且將各個群組進行彙總。

語法
指令為 GROUP BY
SELECT * FROM (資料表) GROUP BY (指定欄位)
範例
SELECT * FROM store GROUP BY class
範例
SELECT class, count(*), sum(price), sum(cost)
FROM store GROUP BY class;

將群組化資料設定條件

HAVING 的使用語法如下
SELECT * FROM (資料表) GROUP BY (指定欄位)
HAVING (指定條件)
範例
SELECT class, count(*),sum(price), sum(cost)
FROM store GROUP BY class;
若加上HAVING一起使用:
SELECT class, count(*),sum(price), sum(cost)
FROM store GROUP BY clas
HAVING count(*)>2;
在SQL中HAVING與WHERE這個兩個指令的差異是不是不大?是否覺得為何不用WHERE就足夠了?其實WHERE跟HAVING的差別在於WHERE是用於GROUP BY之前,因此就無法GROUP BY之後的結果來進行判斷。所以無論如何在GROUP BY後要進行資料判斷時,一定要使用HAVING指令。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料