1. 程式人生 > 其它 >【MySQL_學習筆記】2021.8.12

【MySQL_學習筆記】2021.8.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'
        or
email LIKE '%@baituoshan.com')
SELECT * FROM person
    WHERE description LIKE '%郭靖%'
            and description LIKE '%洪七公%'

備註:(1)如果查詢的條件是隻要包含某字元而不論該字元出現的位置,那麼在該字元的前後加上“%”;(2)“%”雖然可以表示任意個數的字元,但是不能準確限制字元的個數。

SELECT * FROM person
    WHERE p_name like '_風'

備註:下劃線“_”可以代表任意字串,但是隻代表一個

SELECT * FROM
person 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中可以使用。