这一章将讲解一些重要的运算符和函数。主要包括字符函数、数值运算符与函数、比较运算符与函数、日期时间函数、信息函数、聚合函数和加密函数。
1. 字符函数
- CONCAT() 字符连接
例如:SELECT CONCAT(‘mm’,’MYSQL’);
返回值:mmMYSQL - CONCAT_WS() 使用指定的分隔符进行字符连接
注意:里面的参数至少三个
例如:CONCAT_WS(‘|’,’A’,’B’,’C’);
返回值:A|B|C上一个语句也可以使用CONCAT_WS:1
2
3
4
5
6
7mysql> SELECT CONCAT_WS('|','A','B','C');
+----------------------------+
| CONCAT_WS('|','A','B','C') |
+----------------------------+
| A|B|C |
+----------------------------+
1 row in set (0.03 sec)1
2
3
4
5
6
7mysql> SELECT CONCAT_WS('-','mm','MySQL');
+-----------------------------+
| CONCAT_WS('-','mm','MySQL') |
+-----------------------------+
| mm-MySQL |
+-----------------------------+
1 row in set (0.00 sec) - FORMAT() 数字格式化
例如:SELECT FORMAT(15265.57,1);
返回值:15,265.6 - LOWER() 转换成小写字母
- UPPER() 转换成大写字母
- LEFT() 获取左侧字符
- RIGHT() 获取右侧字符
例如:SELECT LOWER(LEFT(‘MySQL’,2));
返回值:my - LENGTH() 获取字符长度,空格也算
- LTRIM() 删除前导空格
- RTRIM() 删除后续空格
- TRIM() 删除前导和后续空格
- REPLACE() 字符串替换
例如:SELECT REPLACE(‘??My??SQL???’,’?’,’’); 将?替换成空
返回值:MySQL - SUBSTRING() 字符串截取
例如:*SELECT SUBSTRING(‘MySQL’,1,2); * 从第一位开始截取两位
返回值:My
*SELECT SUBSTRING(‘MySQL’,3); * 代表从第三位开始截取,到结尾
返回值:SQL
*SELECT SUBSTRING(‘MySQL’,-4); * 代表从结尾开始往前截取
返回值:ySQL
*SELECT SUBSTRING(‘MySQL’,-3,-1); *
返回值为空,MySQL中不允许这种写法,只能起始位为负值,长度不能为负值
python中对于序列的截取可以使用L(-3,-1),表示的是获取倒数第一和倒数第二位置的数据。
- [NOT] LIKE 模式匹配
例如:SELECT ‘MySQL’ LIKE ‘MS%’; 百分号%代表任意一个或者多个字符,下划线_代表任意一个字符
返回值为1,代表true;0代表false1
2
3
4
5
6
7mysql> SELECT 'MySQL' LIKE 'MS%';
+--------------------+
| 'MySQL' LIKE 'MS%' |
+--------------------+
| 0 |
+--------------------+
1 row in set (0.00 sec)
*SELECT * FROM test WHERE username LIKE ‘%1%%’ ESCAPE ‘1’; *代表查找用户名中包含%字符的结果,1后边的%不需要再进行解析,直接认为是字符%,其中1可以为任意的一个字符。
2. 数值运算符与函数
简单的+-*/就略过啦
- CEIL() 进一取整
例如:SELECT CEIL(3.026487);
返回值为4 - DIV 整数除法
例如:SELECT 3 DIV 4;
返回值为0 - FLOOR() 舍一取整 向下取整
例如:SELECT FLOOR(3.97);
返回值为3
注意负数的向下取整:1
2
3
4
5
6
7mysql> SELECT FLOOR(-3.99);
+--------------+
| FLOOR(-3.99) |
+--------------+
| -4 |
+--------------+
1 row in set (0.03 sec) - MOD 取余数
与%功能一样
例如:SELECT 5 MOD 3;
返回值为21
2
3
4
5
6
7mysql> SELECT 5%3;
+------+
| 5%3 |
+------+
| 2 |
+------+
1 row in set (0.00 sec) - POWER() 幂运算
例如:*SELECT POWER(3,3); * 代表3的3次方
返回值为27 - ROUND() 四舍五入
例如:SELECT ROUND(3.655,2); 四舍五入小数点后留两位
返回值为3.66 - TRUNCATE() 数字截取
例如:*SELECT TRUNCATE(3.655,2); * 直接截图小数位数,不进行四舍五入
返回值为3.65
3. 比较运算符与函数
- [NOT] BETWEEN…AND… [不]在范围之内
例如:*SELECT 23 BETWEEN 1 AND 23; * 闭合区间,[1,23]
返回值为1 - [NOT] IN() [不]在取值范围内
例如:SELECT 10 IN(5,10,15,20);
返回值为1 - IS [NOT] NULL [不]为空
NULL为空,空字符’’不为空,0不为空
4.日期时间函数
- NOW() 当前日期和时间
- CURDATE() 当前日期
- CURTIME() 当前时间
- DATE_ADD() 日期变化
例如:SELECT DATE_ADD(‘2020-1-6’, INTERVAL 1 YEAR);1
2
3
4
5
6
7mysql> SELECT DATE_ADD('2020-1-6', INTERVAL 1 YEAR);
+---------------------------------------+
| DATE_ADD('2020-1-6', INTERVAL 1 YEAR) |
+---------------------------------------+
| 2021-01-06 |
+---------------------------------------+
1 row in set (0.00 sec)
SELECT DATE_ADD(‘2020-1-6’, INTERVAL 1 WEEK);
1 | mysql> SELECT DATE_ADD('2020-1-6', INTERVAL 1 WEEK); |
- DATEDIFF() 日期差值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15mysql> SELECT DATEDIFF('2020-1-9','2020-1-10');
+----------------------------------+
| DATEDIFF('2020-1-9','2020-1-10') |
+----------------------------------+
| -1 |
+----------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATEDIFF('2020-1-9',NOW());
+----------------------------+
| DATEDIFF('2020-1-9',NOW()) |
+----------------------------+
| 3 |
+----------------------------+
1 row in set (0.00 sec) - DATE_FORMAT() 日期格式化
例如:SELECT DATE_FORMAT(‘2019-6-24’,’%m/%d/%Y’);
返回值为06/24/2019
SELECT DATE_FORMAT(‘2019-6-24’,’%m/%d/%y’);
返回值为06/24/19
5.信息函数
- CONNECTION_ID() 连接ID
- DATEBASE() 当前数据库
- LAST_INSERT_ID() 最后插入记录
当同时插入多条记录时,返回其中第一条的id号。 - USER() 当前用户
- VERSION() 版本信息
6.聚合函数(需要配合数据表使用)
- AVG() 平均值
- COUNT() 计数
- MAX() 最大值
- MIN() 最小值
- SUM() 求和
7.加密函数
- md5() 信息摘要算法
select md5(‘admin’);如果为了web页面做准备,建议使用MD5() - password() 密码算法
主要用来更改mysql的更改密码
set password=password(‘123’)
小结
1.字符函数
2.数值运算符与函数
3.比较运算符与函数
4.日期时间函数
5.信息函数
6.聚合函数
7.加密函数
通过上面的学习,也可以看出这些函数可以用在任意的字段上。