這一篇就夠啦,帶你瞭解MySQL的常用技巧

裸奔的肉夾饃發表於2020-10-08

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>

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]';

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求平均值,返回指定列資料的平均值

相關文章