17.mysql 之SQL執行順序&正則表示式&函式使用
阿新 • • 發佈:2020-07-31
6.1 SQL執行順序
編寫順序
SELECT DISTINCT <select list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> ORDER BY <order_by_condition>LIMIT <limit_params>
執行順序
FROM <left_table> ON <join_condition> <join_type> JOIN <right_table> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> SELECT DISTINCT <select list> ORDER BY <order_by_condition> LIMIT <limit_params>
6.2 正則表示式使用
正則表示式(Regular Expression)是指一個用來描述或者匹配一系列符合某個句法規則的字串的單個字串。
符號 | 含義 |
---|---|
^ | 在字串開始處進行匹配 |
$ | 在字串末尾處進行匹配 |
. | 匹配任意單個字元, 包括換行符 |
[...] | 匹配出括號內的任意字元 |
[^...] | 匹配不出括號內的任意字元 |
a* | 匹配零個或者多個a(包括空串) |
a+ | 匹配一個或者多個a(不包括空串) |
a? | 匹配零個或者一個a |
a1|a2 | 匹配a1或a2 |
a(m) | 匹配m個a |
a(m,) | 至少匹配m個a |
a(m,n) | 匹配m個a 到 n個a |
a(,n) | 匹配0到n個a |
(...) | 將模式元素組成單一元素 |
select * from emp where name regexp '^T'; select * from emp where name regexp '2$'; select * from emp where name regexp '[uvw]';
6.3 MySQL 常用函式
數字函式
函式名稱 | 作 用 |
---|---|
ABS | 求絕對值 |
SQRT | 求二次方根 |
MOD | 求餘數 |
CEIL 和 CEILING | 兩個函式功能相同,都是返回不小於引數的最小整數,即向上取整 |
FLOOR | 向下取整,返回值轉化為一個BIGINT |
RAND | 生成一個0~1之間的隨機數,傳入整數引數是,用來產生重複序列 |
ROUND | 對所傳引數進行四捨五入 |
SIGN | 返回引數的符號 |
POW 和 POWER | 兩個函式的功能相同,都是所傳引數的次方的結果值 |
SIN | 求正弦值 |
ASIN | 求反正弦值,與函式 SIN 互為反函式 |
COS | 求餘弦值 |
ACOS | 求反餘弦值,與函式 COS 互為反函式 |
TAN | 求正切值 |
ATAN | 求反正切值,與函式 TAN 互為反函式 |
COT | 求餘切值 |
字串函式
函式名稱 | 作 用 |
---|---|
LENGTH | 計算字串長度函式,返回字串的位元組長度 |
CONCAT | 合併字串函式,返回結果為連線引數產生的字串,引數可以使一個或多個 |
INSERT | 替換字串函式 |
LOWER | 將字串中的字母轉換為小寫 |
UPPER | 將字串中的字母轉換為大寫 |
LEFT | 從左側字擷取符串,返回字串左邊的若干個字元 |
RIGHT | 從右側字擷取符串,返回字串右邊的若干個字元 |
TRIM | 刪除字串左右兩側的空格 |
REPLACE | 字串替換函式,返回替換後的新字串 |
SUBSTRING | 擷取字串,返回從指定位置開始的指定長度的字元換 |
REVERSE | 字串反轉(逆序)函式,返回與原始字串順序相反的字串 |
日期函式
函式名稱 | 作 用 |
---|---|
CURDATE 和 CURRENT_DATE | 兩個函式作用相同,返回當前系統的日期值 |
CURTIME 和 CURRENT_TIME | 兩個函式作用相同,返回當前系統的時間值 |
NOW 和 SYSDATE | 兩個函式作用相同,返回當前系統的日期和時間值 |
MONTH | 獲取指定日期中的月份 |
MONTHNAME | 獲取指定日期中的月份英文名稱 |
DAYNAME | 獲取指定曰期對應的星期幾的英文名稱 |
DAYOFWEEK | 獲取指定日期對應的一週的索引位置值 |
WEEK | 獲取指定日期是一年中的第幾周,返回值的範圍是否為 0〜52 或 1〜53 |
DAYOFYEAR | 獲取指定曰期是一年中的第幾天,返回值範圍是1~366 |
DAYOFMONTH | 獲取指定日期是一個月中是第幾天,返回值範圍是1~31 |
YEAR | 獲取年份,返回值範圍是 1970〜2069 |
TIME_TO_SEC | 將時間引數轉換為秒數 |
SEC_TO_TIME | 將秒數轉換為時間,與TIME_TO_SEC 互為反函式 |
DATE_ADD 和 ADDDATE | 兩個函式功能相同,都是向日期新增指定的時間間隔 |
DATE_SUB 和 SUBDATE | 兩個函式功能相同,都是向日期減去指定的時間間隔 |
ADDTIME | 時間加法運算,在原始時間上新增指定的時間 |
SUBTIME | 時間減法運算,在原始時間上減去指定的時間 |
DATEDIFF | 獲取兩個日期之間間隔,返回引數 1 減去引數 2 的值 |
DATE_FORMAT | 格式化指定的日期,根據引數返回指定格式的值 |
WEEKDAY | 獲取指定日期在一週內的對應的工作日索引 |
聚合函式
函式名稱 | 作用 |
---|---|
MAX | 查詢指定列的最大值 |
MIN | 查詢指定列的最小值 |
COUNT | 統計查詢結果的行數 |
SUM | 求和,返回指定列的總和 |
AVG | 求平均值,返回指定列資料的平均值 |