【MySQL_學習筆記】2021.8.12
阿新 • • 發佈:2021-08-12
- like與萬用字元
SELECT * FROM gb_members WHERE kitchen_skill LIKE '%雞'
備註:百分號“%”在與LIKE搭配使用時,代表“任意多個任意字元”
SELECT * FROM gb_members WHERE kitchen_skill LIKE '%雞%'
SELECT * FROM person WHERE email LIKE 'h%taohuadao.com'
SELECT * FROM person WHERE NOT (email LIKE 'h%@taohuadao.com' oremail LIKE '%@baituoshan.com')
SELECT * FROM person WHERE description LIKE '%郭靖%' and description LIKE '%洪七公%'
備註:(1)如果查詢的條件是隻要包含某字元而不論該字元出現的位置,那麼在該字元的前後加上“%”;(2)“%”雖然可以表示任意個數的字元,但是不能準確限制字元的個數。
SELECT * FROM person WHERE p_name like '_風'
備註:下劃線“_”可以代表任意字串,但是隻代表一個
SELECT * FROMperson WHERE description LIKE '%\%'
備註:如果需要查詢的字元是“%”或“_”本身,應該使用反斜線“\”對萬用字元進行轉義,將其變為普通字元
-
計算欄位的應用
SELECT * FROM football WHERE GS-GA>50
SELECT * FROM football WHERE (GS-GA)/(win+draw+lose)>1.2
備註:(1)用欄位計算的結果作為篩選條件,只要參與計算的欄位都是數字,就可以使用算數運算對欄位進行計算
(2)由於無法利用建立索引等原因,在WHERE中使用計算欄位可能會降低查詢效率
SELECT team,GS-GA FROM football WHERE (GS-GA)/(win+draw+lose)>1.2
SELECT *, GS-GA, win+draw+lose, (GS-GA)/(win+draw+lose) FROM football WHERE (GS-GA)/(win+draw+lose)>1.2
備註:可以將計算欄位寫在SELECT後面,相當於在結果中新增一個原表中沒有的“自定義列”
SELECT *, GS-GA as 淨勝球總數, win+draw+lose as 場數, (GS-GA)/(win+draw+lose) as 場均淨勝球 FROM football WHERE (GS-GA)/(win+draw+lose)>1.2
備註:使用AS關鍵字,對SELECT的任何欄位(包括自定義列)分別起“別名”,結果更加易讀
SELECT *, GS-GA as 淨勝球總數, win+draw+lose as 場數, (GS-GA)/(win+draw+lose) as 場均淨勝球 FROM football WHERE (GS-GA)/(win+draw+lose)>1.2 ORDER BY 淨勝球總數/場數
備註:
(1)不能在SELECT或WHERE中直接引用別名進行計算;
(2)可以在ORDERBY中使用別名進行排序;
(3)由於SQL語句的執行過程是:FROM->WHERE->SELECT->ORDERBY,所以在WHERE或SELECT中引用別名時SELECT還沒有執行,但是在ORDERBY中可以使用。