第六章 运算符和函数

这一章将讲解一些重要的运算符和函数。主要包括字符函数、数值运算符与函数、比较运算符与函数、日期时间函数、信息函数、聚合函数和加密函数。

1. 字符函数

  • CONCAT() 字符连接
    例如:SELECT CONCAT(‘mm’,’MYSQL’);
    返回值:mmMYSQL
  • CONCAT_WS() 使用指定的分隔符进行字符连接
    注意:里面的参数至少三个
    例如:CONCAT_WS(‘|’,’A’,’B’,’C’);
    返回值:A|B|C
    1
    2
    3
    4
    5
    6
    7
    mysql> SELECT CONCAT_WS('|','A','B','C');
    +----------------------------+
    | CONCAT_WS('|','A','B','C') |
    +----------------------------+
    | A|B|C |
    +----------------------------+
    1 row in set (0.03 sec)
    上一个语句也可以使用CONCAT_WS:
    1
    2
    3
    4
    5
    6
    7
    mysql> 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代表false
    1
    2
    3
    4
    5
    6
    7
    mysql> 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
    7
    mysql> SELECT FLOOR(-3.99);
    +--------------+
    | FLOOR(-3.99) |
    +--------------+
    | -4 |
    +--------------+
    1 row in set (0.03 sec)
  • MOD 取余数
    与%功能一样
    例如:SELECT 5 MOD 3;
    返回值为2
    1
    2
    3
    4
    5
    6
    7
    mysql> 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
    7
    mysql> 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
2
3
4
5
6
7
mysql> SELECT DATE_ADD('2020-1-6', INTERVAL 1 WEEK);
+---------------------------------------+
| DATE_ADD('2020-1-6', INTERVAL 1 WEEK) |
+---------------------------------------+
| 2020-01-13 |
+---------------------------------------+
1 row in set (0.00 sec)
  • DATEDIFF() 日期差值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    mysql> 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.加密函数
通过上面的学习,也可以看出这些函数可以用在任意的字段上。