常用SQL技巧

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 求平均值,返回指定列數據的平均值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章