昨天我們學會了最基本的四個 SQL 語句,
但是要做到一些讀者平常用 Excel 表格篩選,
常用的邏輯計算功能,仍是稍嫌不足,
因此我們今天會學 SQL 常用的語法技巧,
幫助各位資料庫的操作可以更加熟練。
這幾個指令可以先簡單分類:
優化查詢 —> like
排序篩選 —> order, distinct
簡易計算 —> sum, count
一樣,我們使用昨日的資料庫:
id | name | gender | age | hobby |
---|---|---|---|---|
1 | John | male | 23 | basketball |
2 | May | female | 32 | baseball |
3 | Tom | both | 25 | sleep |
4 | Gary | male | 50 | coding |
like 語句通常會放在 Where 內使用,
跟他同樣層級的詞,比較像是” > ”, “ < ” 這種運算符號,
用到情境非常多,舉個例子,
我們不會每次搜尋時都要去搜『完全一樣』的值,
像是 hobby ,我們可能只想要知道,只要有包含 ball 這個詞的,
就全部撈出來,那這個時候我們就會使用 like 這個詞。
用法如下:
Select * From users Where hobby Like '%ball%'
得到的結果為:
id | name | gender | age | hobby |
---|---|---|---|---|
1 | John | male | 23 | basketball |
2 | May | female | 32 | baseball |
這邊我們用到了『 % 』這個特殊符號,
這個符號其實代表『萬用字元』的意思,
因此不一定只能使用 % 這個符號,
只是我們最常使用這個符號。
而萬用字元,是程式碼在做字串比對時,會使用到的快樂夥伴們,
但他們實際上代表的意義千奇百怪,一點都不快樂,
如果有興趣的讀者,可以看看這個初階的教學文件
order 可以幫助我們排序撈出來的資料,
而排序不限制為數字,就算是字串也可以排序唷!
另外也能設定要從小到大,還是從大到小,
我們先來看看,針對 age 這個欄位的排序:
Select * From users Order by age
得到結果為:
id | name | gender | age | hobby |
---|---|---|---|---|
1 | John | male | 23 | basketball |
3 | Tom | both | 25 | sleep |
2 | May | female | 32 | baseball |
4 | Gary | male | 50 | coding |
很明顯的看到,這是由小排到大的模式,
如果想要由大到小,就在後面加一個字『 DESC 』
Select * From users Order by age DESC
就可以改成,反排序模式囉!:
id | name | gender | age | hobby |
---|---|---|---|---|
4 | Gary | male | 50 | coding |
2 | May | female | 32 | baseball |
3 | Tom | both | 25 | sleep |
1 | John | male | 23 | basketball |
另外,其實正排序模式的詞為『ASC』,
但其實 SQL 查詢本來就是正排序模式,所以也不用特別寫唷~
Distinct 這個詞的使用情境,是在當你想取某個欄位的『不重複資料』時,
可以好好使用的好東西。
假定我們現在要來抓取所有gender 欄位裡的資料,
並要不重複的資料,那我可以這樣寫:
Select Distinct(gender) From users
就會得到這個結果:
gender |
---|
female |
both |
male |
是不是很快速方便呀~~
sum 這個詞,他在 SQL 中就像是『函式』的存在,
具有簡單的邏輯,可以運算使用者的查詢結果,
而 sum 的用法,就是去『加總特定欄位的值』
那我們現在就針對,age 來做加總,
我想看看,所有 gender 是 male 資料的 age 加起來是多少:
Select Sum(age) From users Where gender = 'male'
這樣就會輸出
Sum(age) |
---|
73 |
另外,各位會發現欄位名稱是很醜很醜的 sum(age),
可以使用 as 語句,去設定撈出來的資料欄位名稱唷!
Select Sum(age) as total_age from users where gender = 'male'
出來的結果就會像:
total_age |
---|
73 |
是不是感覺更有意義了呀~
count 的用法和 sum 非常相似,
它可以去計算『滿足條件的資料有幾筆』,
因此通常也都是要搭配 where 語句,
直接純使用,就是算目前資料庫總共有幾筆資料。
並且會常在圓括號內,使用 * 字號,代表一次抓取所有的欄位,
用法如下:
Select Count(*) From users Where gender = 'male'
輸出:
Count(*) |
---|
2 |
就會算出 gender 是 male 的資料總共有 2 筆
相同的,可以使用 as 詞句,指定結果為某個特定欄位。
Select Count(*) as total_quantity From users Where gender = 'male'
就會有漂亮的結果囉~
total_quantity |
---|
2 |
如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~ |