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>
正則表達式使用
正則表達式(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]';
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 | 求平均值,返回指定列數據的平均值 |