MySQL 函式語法整理

枕上~詩書閒發表於2020-12-12

資料記錄統計函式:
  AVG(欄位名)   //得出一個表格某個欄位的平均值
  COUNT(*|欄位名) //對資料行數的統計或對某一欄位有值的資料行數統計
  MAX(欄位名)   //取得一個表格中某欄位的最大值
  MIN(欄位名)    //取得一個表格中某欄位的最小值
  SUM(欄位名)   //取得一個表格中某欄位的總和

  • CASE WHEN THEN 函式
      語法: CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ……] [ELSE result ] END CASE WHEN [condition] THEN result [WHEN[condition] THEN result ……] [ELSE result] END ;

  • IF 函式用法
      語法: IF(expr1,expr2,expr3)

  • IFNULL 函式
      語法: IFNULL(expr1,expr2)

  • 函式 CONCAT(str1 ,str2 ,…)
      函式使用說明:返回結果為連線引數產生的字串。如有任何一個引數為 NULL ,則
      返回值為 NULL 。或許有一個或多個引數。

  • 函式 CONCAT_WS(separator ,str1 ,str2 ,…)
      函式使用說明: CONCAT_WS() 代表 CONCAT With Separator ,是 CONCAT() 的
      特殊形式。 第一個引數是其它引數的分隔符。分隔符的位置放在要連線的兩個字串之間。分隔符可以是一個字串,也可以是其它引數。如果分隔符為 NULL ,則結果為 NULL 。函式會忽略任何分隔符引數後的 NULL 值。

  • 函式 FORMAT(X ,D )
      函式使用說明: 將 number X 設定為格式 ‘#,###,###.##’, 以四捨五入的方式保留到小數點後 D 位 , 而返回結果為一個字串。

  • 函式INSTR(str,substr)
      函式使用說明:返回字串 str 中子字串的第一個出現位置。這和LOCATE() 的雙引數形式相同,除非引數的順序被顛倒

  • 函式LEFT(str,len)
      函式使用說明:返回從字串str 開始的len 最左字元

  • 函式 LOCATE(substr ,str ) , LOCATE(substr ,str ,pos )
      函式使用說明:第一個語法返回字串 str 中子字串substr 的第一個出現位置。第二個語法返回字串 str 中子字串substr 的第一個出現位置, 起始位置在pos 。如若substr 不在str 中,則返回值為0 。

  • 函式LOWER(str )
      函式使用說明:返回字串 str 以及所有根據最新的字符集對映表變為小寫字母的字元

  • 函式 SOUNDEX(str )
      函式使用說明:從str 返回一個index字串。 兩個具有幾乎同樣探測的字串應該具有同樣的 index 字串。

  • 函式SPACE(N )
      函式使用說明:返回一個由N 間隔符號組成的字串

  • 函式SUBSTRING(str ,pos ) , SUBSTRING(str FROM pos ) SUBSTRING(str ,pos ,len ) , SUBSTRING(str FROM pos FOR len )
      函式使用說明:不帶有len 引數的格式從字串str 返回一個子字串,起始於位置 pos 。

  • 函式 GROUP_CONCAT(expr )
      函式使用說明:該函式返回帶有來自一個組的連線的非NULL 值的字串結果。

  • COALESCE()函式
    COALESCE是一個函式, (expression_1, expression_2, …,expression_n)依次參考各參數列達式,遇到非null值即停止並返回該值。如果所有的表示式都是空值,最終將返回一個空值。使用COALESCE在於大部分包含空值的表示式最終將返回空值。特別是在做統計的時候,這個函式作為條件可以兼顧到一些特殊情況。

補:

  • union和union all關鍵字都是將兩個結果集合併為一個,但這兩者從使用和效率上來說都有所不同

union在進行表連線後會篩選掉重複的記錄,所以在表連線後會對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。

如:

 select * from test_union1
   union
 select * from test_union2

這個SQL在執行時先取出兩個表的結果,再用排序空間進行排序刪除重複的記錄,最後返回結果集,如果表資料量大的話可能會導致用磁碟進行排序。

而union all只是簡單的將兩個結果合併後就返回。這樣,如果返回的兩個結果集中有重複的資料,那麼返回的結果集就會包含重複的資料了。
從效率上說,union all要比union快很多,所以,如果可以確認合併的兩個結果集中不包含重複的資料的話,那麼就使用union all,如下:

select * from test_union1
union all
select * from test_union2

使用 union 組合查詢的結果集有兩個最基本的規則:

1、所有查詢中的列數和列的順序必須相同。
2、資料型別必須相容

還有我們其實在寫SQL語句的時候可以子查連表虛擬的臨時表這樣其實可以寫出不一樣的SQL,嘻嘻

相關文章