MySQL 常用函数总结
前言:
MySQL数据库中提供了很丰富的函数,比如我们常用的聚合函数,日期及字符串处理函数等。SELECT语句及其条件表达式都可以使用这些函数,函数可以帮助用户更加方便的处理表中的数据,使MySQL数据库的功能更加强大。本篇文章主要为大家介绍几类常用函数的用法。
1.聚合函数
聚合函数是平时比较常用的一类函数,这里列举如下:
- COUNT(col) 统计查询结果的行数
- MIN(col) 查询指定列的最小值
- MAX(col) 查询指定列的最大值
- SUM(col) 求和,返回指定列的总和
- AVG(col) 求平均值,返回指定列数据的平均值
2.数值型函数
数值型函数主要是对数值型数据进行处理,得到我们想要的结果,常用的几个列举如下,具体使用方法大家可以试试看。
- ABS(x) 返回x的绝对值
- BIN(x) 返回x的二进制
- CEILING(x) 返回大于x的最小整数值
- EXP(x) 返回值e(自然对数的底)的x次方
- FLOOR(x) 返回小于x的最大整数值
- GREATEST(x1,x2,...,xn) 返回集合中最大的值
- LEAST(x1,x2,...,xn) 返回集合中最小的值
- LN(x) 返回x的自然对数
- LOG(x,y) 返回x的以y为底的对数
- MOD(x,y) 返回x/y的模(余数)
- PI() 返回pi的值(圆周率)
- RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值
- ROUND(x,y) 返回参数x的四舍五入的有y位小数的值
- TRUNCATE(x,y) 返回数字x截短为y位小数的结果
一些示例:
#ABS()函数求绝对值 mysql>SELECTABS(5),ABS(-2.4),ABS(-24),ABS(0); +--------+-----------+----------+--------+ |ABS(5)|ABS(-2.4)|ABS(-24)|ABS(0)| +--------+-----------+----------+--------+ |5|2.4|24|0| +--------+-----------+----------+--------+ #取整函数CEIL(x)和CEILING(x)的意义相同,返回不小于x的最小整数值 mysql>SELECTCEIL(-2.5),CEILING(2.5); +------------+--------------+ |CEIL(-2.5)|CEILING(2.5)| +------------+--------------+ |-2|3| +------------+--------------+ #求余函数MOD(x,y)返回x被y除后的余数 mysql>SELECTMOD(63,8),MOD(120,10),MOD(15.5,3); +-----------+-------------+-------------+ |MOD(63,8)|MOD(120,10)|MOD(15.5,3)| +-----------+-------------+-------------+ |7|0|0.5| +-----------+-------------+-------------+ #RAND()函数被调用时,可以产生一个在0和1之间的随机数 mysql>SELECTRAND(),RAND(),RAND(); +---------------------+--------------------+----------------------+ |RAND()|RAND()|RAND()| +---------------------+--------------------+----------------------+ |0.24996517063115273|0.9559759106077029|0.029984071878701515| +---------------------+--------------------+----------------------+
3.字符串函数
字符串函数可以对字符串类型数据进行处理,在程序应用中用处还是比较大的,同样这里列举几个常用的如下:
- LENGTH(s) 计算字符串长度函数,返回字符串的字节长度
- CONCAT(s1,s2...,sn) 合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个
- INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
- LOWER(str) 将字符串中的字母转换为小写
- UPPER(str) 将字符串中的字母转换为大写
- LEFT(str,x) 返回字符串str中最左边的x个字符
- RIGHT(str,x) 返回字符串str中最右边的x个字符
- TRIM(str) 删除字符串左右两侧的空格
- REPLACE 字符串替换函数,返回替换后的新字符串
- SUBSTRING 截取字符串,返回从指定位置开始的指定长度的字符换
- REVERSE(str) 返回颠倒字符串str的结果
一些示例:
#LENGTH(str)函数的返回值为字符串的字节长度
mysql>SELECTLENGTH('name'),LENGTH('数据库');
+----------------+---------------------+
|LENGTH('name')|LENGTH('数据库')|
+----------------+---------------------+
|4|9|
+----------------+---------------------+
#CONCAT(sl,s2,...)函数返回结果为连接参数产生的字符串若有任何一个参数为NULL,则返回值为NULL
mysql>SELECTCONCAT('MySQL','5.7'),CONCAT('MySQL',NULL);
+-----------------------+----------------------+
|CONCAT('MySQL','5.7')|CONCAT('MySQL',NULL)|
+-----------------------+----------------------+
|MySQL5.7|NULL|
+-----------------------+----------------------+
#INSERT(s1,x,len,s2)返回字符串s1,子字符串起始于x位置,并且用len个字符长的字符串代替s2
mysql>SELECTINSERT('Football',2,4,'Play')AScol1,
->INSERT('Football',-1,4,'Play')AScol2,
->INSERT('Football',3,20,'Play')AScol3;
+----------+----------+--------+
|col1|col2|col3|
+----------+----------+--------+
|FPlayall|Football|FoPlay|
+----------+----------+--------+
#UPPER,LOWER是大小写转换函数
mysql>SELECTLOWER('BLUE'),LOWER('Blue'),UPPER('green'),UPPER('Green');
+---------------+---------------+----------------+----------------+
|LOWER('BLUE')|LOWER('Blue')|UPPER('green')|UPPER('Green')|
+---------------+---------------+----------------+----------------+
|blue|blue|GREEN|GREEN|
+---------------+---------------+----------------+----------------+
#LEFT,RIGHT是截取左边或右边字符串函数
mysql>SELECTLEFT('MySQL',2),RIGHT('MySQL',3);
+-----------------+------------------+
|LEFT('MySQL',2)|RIGHT('MySQL',3)|
+-----------------+------------------+
|My|SQL|
+-----------------+------------------+
#REPLACE(s,s1,s2)使用字符串s2替换字符串s中所有的字符串s1
mysql>SELECTREPLACE('aaa.mysql.com','a','w');
+----------------------------------+
|REPLACE('aaa.mysql.com','a','w')|
+----------------------------------+
|www.mysql.com|
+----------------------------------+
#函数SUBSTRING(s,n,len)带有len参数的格式,从字符串s返回一个长度同len字符相同的子字符串,起始于位置n
mysql>SELECTSUBSTRING('computer',3)AScol1,
->SUBSTRING('computer',3,4)AScol2,
->SUBSTRING('computer',-3)AScol3,
->SUBSTRING('computer',-5,3)AScol4;
+--------+------+------+------+
|col1|col2|col3|col4|
+--------+------+------+------+
|mputer|mput|ter|put|
+--------+------+------+------+
4.日期和时间函数
- CURDATE和CURRENT_DATE 两个函数作用相同,返回当前系统的日期值
- CURTIME和CURRENT_TIME 两个函数作用相同,返回当前系统的时间值
- NOW和SYSDATE 两个函数作用相同,返回当前系统的日期和时间值
- UNIX_TIMESTAMP 获取UNIX时间戳函数,返回一个以UNIX时间戳为基础的无符号整数
- FROM_UNIXTIME 将UNIX时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
- 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 获取指定日期在一周内的对应的工作日索引
一些示例:
#CURDATE()和CURRENT_DATE()函数的作用相同,将当前日期按照“YYYY-MM-DD”或“YYYYMMDD”格式的值返回
mysql>SELECTCURDATE(),CURRENT_DATE(),CURRENT_DATE()+0;
+------------+----------------+------------------+
|CURDATE()|CURRENT_DATE()|CURRENT_DATE()+0|
+------------+----------------+------------------+
|2019-10-22|2019-10-22|20191022|
+------------+----------------+------------------+
#MONTH(date)函数返回指定date对应的月份
mysql>SELECTMONTH('2017-12-15');
+---------------------+
|MONTH('2017-12-15')|
+---------------------+
|12|
+---------------------+
#DATE_ADD(date,INTERVALexprtype)和ADDDATE(date,INTERVALexprtype)两个函数的作用相同,都是用于执行日期的加运算。
mysql>SELECTDATE_ADD('2018-10-3123:59:59',INTERVAL1SECOND)ASC1,
->DATE_ADD('2018-10-3123:59:59',INTERVAL'1:1'MINUTE_SECOND)ASC2,
->ADDDATE('2018-10-3123:59:59',INTERVAL1SECOND)ASC3;
+---------------------+---------------------+---------------------+
|C1|C2|C3|
+---------------------+---------------------+---------------------+
|2018-11-0100:00:00|2018-11-0100:01:00|2018-11-0100:00:00|
+---------------------+---------------------+---------------------+
#DATEDIFF(date1,date2)返回起始时间date1和结束时间date2之间的天数
mysql>SELECTDATEDIFF('2017-11-30','2017-11-29')ASCOL1,
->DATEDIFF('2017-11-30','2017-12-15')AScol2;
+------+------+
|COL1|col2|
+------+------+
|1|-15|
+------+------+
#DATE_FORMAT(date,format)函数是根据format指定的格式显示date值
mysql>SELECTDATE_FORMAT('2017-11-1521:45:00','%W%M%D%Y')AScol1,
->DATE_FORMAT('2017-11-1521:45:00','%h:i%%p%M%D%Y')AScol2;
+------------------------------+----------------------------+
|col1|col2|
+------------------------------+----------------------------+
|WednesdayNovember15th2017|09:iPMNovember15th2017|
+------------------------------+----------------------------+
5.流程控制函数
流程控制类函数可以进行条件操作,用来实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台,列举如下:
- IF(test,t,f) 如果test是真,返回t;否则返回f
- IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2
- NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否则返回arg1
- CASEWHEN[test1]THEN[result1]...ELSE[default]END 如果testN是真,则返回resultN,否则返回default
- CASE[test]WHEN[val1]THEN[result]...ELSE[default]END 如果test和valN相等,则返回resultN,否则返回default
一些示例:
#IF语句允许根据表达式的某个条件或值结果来执行一组SQL语句
mysql>SELECTIF(1<2,1,0)c1,IF(1>5,'√','×')c2,IF(STRCMP('abc','ab'),'yes','no')c3;
+----+----+-----+
|c1|c2|c3|
+----+----+-----+
|1|×|yes|
+----+----+-----+
#IFNULL接受两个参数,如果第一个不是NULL,则返回第一个参数。否则,IFNULL函数返回第二个参数
mysql>SELECTIFNULL(5,8),IFNULL(NULL,'OK');
+-------------+-------------------+
|IFNULL(5,8)|IFNULL(NULL,'OK')|
+-------------+-------------------+
|5|OK|
+-------------+-------------------+
#NULLIF函数
mysql>SELECTNULLIF(5,8),NULLIF(8,8);
+-------------+-------------+
|NULLIF(5,8)|NULLIF(8,8)|
+-------------+-------------+
|5|NULL|
+-------------+-------------+
#CASEWHEN函数
mysql>SELECTCASEWHEN1>0THEN'true'ELSE'false'END;
+--------------------------------------------+
|CASEWHEN1>0THEN'true'ELSE'false'END|
+--------------------------------------------+
|true|
+--------------------------------------------+
mysql>SELECTCASE11WHEN1THEN'one'
->WHEN2THEN'two'ELSE'more'END;
+-------------------------------------------------------------+
|CASE11WHEN1THEN'one'
WHEN2THEN'two'ELSE'more'END|
+-------------------------------------------------------------+
|more|
+-------------------------------------------------------------+
6.加密函数
加密函数主要用于对字符串进行加密,常用的几个列举如下:
- ENCRYPT(str,salt) 使用UNIXcrypt()函数,用关键词salt(一个可以惟一确定口令的字符串,就像钥匙一样)加密字符串str
- ENCODE(str,key) 使用key作为密钥加密字符串str,调用ENCODE()的结果是一个二进制字符串,它以BLOB类型存储
- MD5() 计算字符串str的MD5校验和
- PASSWORD(str) 返回字符串str的加密版本,这个加密过程是不可逆转的,和UNIX密码加密过程使用不同的算法。
- SHA() 计算字符串str的安全散列算法(SHA)校验和
一些示例:
#ENCRYPT函数
mysql>SELECTENCRYPT('root','salt');
+------------------------+
|ENCRYPT('root','salt')|
+------------------------+
|saFKJij3eLACw|
+------------------------+
#MD5()函数
mysql>SELECTMD5('123456');
+----------------------------------+
|MD5('123456')|
+----------------------------------+
|e10adc3949ba59abbe56e057f20f883e|
+----------------------------------+
#PASSWORD函数
mysql>selectPASSWORD('abcd');
+-------------------------------------------+
|PASSWORD('abcd')|
+-------------------------------------------+
|*A154C52565E9E7F94BFC08A1FE702624ED8EFFDA|
+-------------------------------------------+
总结:
本文主要介绍了MySQL常用函数的作用,简单举例说明部分函数的用法。在实际环境中,这些函数可能嵌套使用,使用方法要复杂很多,希望大家用到的时候要多多注意各个参数的作用。
到此这篇关于MySQL常用函数总结的文章就介绍到这了,更多相关MySQL常用函数内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!