mysql手册13_常用的SQL技巧


1. SQL执行顺序

1.1 编写顺序
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>
1.2 执行顺序
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>
1.3 使用正则表达式查询
查询以'北'开头的数据:
mysql> select * from city where city_name regexp '^北';
+---------+-----------+------------+
| city_id | city_name | country_id |
+---------+-----------+------------+
|       3 | 北京      |          1 |
+---------+-----------+------------+

查询以'海'结尾的数据:
mysql> select * from city where city_name regexp '海$';
+---------+-----------+------------+
| city_id | city_name | country_id |
+---------+-----------+------------+
|       4 | 上海      |          1 |
+---------+-----------+------------+

查询包含'西''京'的数据:
mysql> select * from city where city_name regexp '[西京]';
+---------+-----------+------------+
| city_id | city_name | country_id |
+---------+-----------+------------+
|       1 | 西安市    |          1 |
|       3 | 北京      |          1 |
+---------+-----------+------------+

正则表达式详表

符号 含义
^ 在字符串开始处进行匹配
$ 在字符串末尾处进行匹配
. 匹配任意单个字符, 包括换行符
[…] 匹配包含括号内的任意字符
[^…] 匹配不包含括号内的任意字符
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
(…) 将模式元素组成单一元素

2. MySQL的常用函数

2.1 数字函数
ABS					求绝对值
SQRT				求二次方根
MOD					求余数
CEIL 和 CEILING		两个函数功能相同,都是返回不小于参数的最小整数,即向上取整
FLOOR				向下取整,返回值转化为一个BIGINT
RAND				生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列
ROUND				对所传参数进行四舍五入
SIGN				返回参数的符号
POW 和 POWER		两个函数的功能相同,都是所传参数的次方的结果值
SIN					求正弦值
ASIN				求反正弦值,与函数 SIN 互为反函数
COS					求余弦值
ACOS				求反余弦值,与函数 COS 互为反函数
TAN					求正切值
ATAN				求反正切值,与函数 TAN 互为反函数
COT					求余切值
select abs(-10);
+----------+
| abs(-10) |
+----------+
|       10 |
+----------+
select ceil(8.2);
+-----------+
| ceil(8.2) |
+-----------+
|         9 |
+-----------+
select floor(7.7);
+------------+
| floor(7.7) |
+------------+
|          7 |
+------------+
select rand();
+--------------------+
| rand()             |
+--------------------+
| 0.8586318137670232 |
+--------------------+
2.2 字符串函数
LENGTH		计算字符串长度函数,返回字符串的字节长度
CONCAT		合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个
INSERT		替换字符串函数
LOWER		将字符串中的字母转换为小写
UPPER		将字符串中的字母转换为大写
LEFT		从左侧字截取符串,返回字符串左边的若干个字符
RIGHT		从右侧字截取符串,返回字符串右边的若干个字符
TRIM		删除字符串左右两侧的空格
REPLACE		字符串替换函数,返回替换后的新字符串
SUBSTRING	截取字符串,返回从指定位置开始的指定长度的字符换
REVERSE		字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串
select length('hello BLU');
+---------------------+
| length('hello BLU') |
+---------------------+
|                   9 |
+---------------------+
select concat('a','b','c');
+---------------------+
| concat('a','b','c') |
+---------------------+
| abc                 |
+---------------------+
select lower('AbC');
+--------------+
| lower('AbC') |
+--------------+
| abc          |
+--------------+
select left('hello',3);
+-----------------+
| left('hello',3) |
+-----------------+
| hel             |
+-----------------+
2.3 日期函数
CURDATE 和 CURRENT_DATE	两个函数作用相同,返回当前系统的日期值
CURTIME 和 CURRENT_TIME	两个函数作用相同,返回当前系统的时间值
NOW 和 SYSDATE			两个函数作用相同,返回当前系统的日期和时间值
MONTH					获取指定日期中的月份
MONTHNAME				获取指定日期中的月份英文名称
DAYNAME					获取指定曰期对应的星期几的英文名称
DAYOFWEEK				获取指定日期对应的一周的索引位置值
WEEK					获取指定日期是一年中的第几周,返回值的范围是否为 052153
DAYOFYEAR				获取指定曰期是一年中的第几天,返回值范围是1~366
DAYOFMONTH				获取指定日期是一个月中是第几天,返回值范围是1~31
YEAR					获取年份,返回值范围是 19702069
TIME_TO_SEC				将时间参数转换为秒数
SEC_TO_TIME				将秒数转换为时间,与TIME_TO_SEC 互为反函数
DATE_ADD 和 ADDDATE		两个函数功能相同,都是向日期添加指定的时间间隔
DATE_SUB 和 SUBDATE		两个函数功能相同,都是向日期减去指定的时间间隔
ADDTIME					时间加法运算,在原始时间上添加指定的时间
SUBTIME					时间减法运算,在原始时间上减去指定的时间
DATEDIFF				获取两个日期之间间隔,返回参数 1 减去参数 2 的值
DATE_FORMAT				格式化指定的日期,根据参数返回指定格式的值
WEEKDAY					获取指定日期在一周内的对应的工作日索引
select curdate();
+------------+
| curdate()  |
+------------+
| 2020-08-29 |
+------------+
select now();
+---------------------+
| now()               |
+---------------------+
| 2020-08-29 21:37:49 |
+---------------------+
2.4 聚合函数
MAX		查询指定列的最大值
MIN		查询指定列的最小值
COUNT	统计查询结果的行数
SUM		求和,返回指定列的总和
AVG		求平均值,返回指定列数据的平均值
select max(price) from t_menu;
+------------+
| max(price) |
+------------+
|         56 |
+------------+

猜你喜欢

转载自blog.csdn.net/BLU_111/article/details/108299361