Mysql函数

Mysql函数教程

与其它的计算机语言一样, SQL 也可以用函数来处理数据。函数一般是在数据上面执行的,为数据的转换和处理提供了方便。

本章节我们使用下面的表里面的语句进行操作

CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_no` int(11) DEFAULT NULL, `stu_name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `chinese_score` double(10,0) DEFAULT NULL COMMENT '语文成绩', `mathematics_score` double(10,0) DEFAULT NULL COMMENT '数学成绩', `english_score` double(10,0) DEFAULT NULL COMMENT '英语成绩', `birth` date DEFAULT NULL COMMENT '生日', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4; INSERT INTO student (`id`,`stu_no`,`stu_name`,`age`,`chinese_score`,`mathematics_score`,`english_score`, `birth`) VALUES (1,1001,'xiaoming',17,100,100,100,'2003-02-08'), (2,1002,'honghong',16,99,100,90,'2004-02-27'), (3,1003,'xiaojun ',18,60,55,65,'2002-11-11'), (4,1004,' 小亮 ',19,88,90,100,'2001-08-20'), (5,1005,'LIANGLIANG',19,55,100,100,'2001-02-16'), (6,1006,' 小 杰 ',16,99,55,45,'2004-08-25'), (7,1007,'小亮',20,99,99,99,'2000-12-12'), (8,1008,'无年龄',null,0,0,0,null), (9,1009,'欧阳亮亮',19,100,100,100,'2001-01-01');

Mysql函数详解

sql 里面函数一般有文本处理函数、日期和时间处理函数、数值处理函数等等。

文本处理函数

常用文本处理函数

函数名 描述
TRIM() 去除值左右两边空格
LTRIM() 去除列左边空格
RTRIM() 去除列右边空格
LEFT() 返回字符串左边的字符
LENGTH() 返回字符串长度
LOWER() 将字符串转换为小写
RIGHT() 返回字符串右边字符
UPPER() 将字符串转换为大写

案例

-- 嗨客网(www.haicoder.net) select id,stu_no,stu_name,age,chinese_score,mathematics_score,english_score FROM student WHERE stu_name = '小亮';

运行结果如下

28 trim_1.png

现在,我们修改 sql 语句,如下:

-- 嗨客网(www.haicoder.net) select id,stu_no,stu_name,age,chinese_score,mathematics_score,english_score FROM student WHERE trim(stu_name) = '小亮';

运行结果如下

29 trim_2.png

我们使用了 TRIM 函数,trim 函数是将列两边的空格去除,发现将名字中去除两边空格是 小亮的数据都查询出来。函数使用在列上面。

其它的函数使用方式和 TRIM() 函数使用方式一样,都使用在列上面,它可以使用在 where 条件的前面也可以使用在 where 条件后面的列上面。

日期函数

常用日期处理函数

函数名 参数描述 描述
NOW() 返回当前的日期和时间
CURDATE() 返回当前的日期
CURTIME() 返回当前的时间
DATE(date) date,一个时间格式的数据,可以精确到时分秒,也可以精确到天 提取日期或日期/时间表达式的日期部分,精确到天
EXTRACT(unit FROM date) unit 是时间单位,DAY 表示天,HOUR 表示时,YEAR 表示年。date 表示时间的列 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
DATE_ADD(date,INTERVAL expr typ) date 时间上面增加指定 typ 的格式的时间。typ 有 SECOND,MINUTE,HOUR … 等等 给日期添加指定的时间间隔
DATE_SUB(date,INTERVAL expr type) 与 add 相反,减去相应时间 从日期减去指定的时间间隔
DATEDIFF(date1,date2) 两个日期 返回两个日期之间的天数
DATE_FORMAT(date,format) date 参数是合法的日期。format 规 定日期/时间的输出格式。 用不同的格式显示日期/时间

案例

-- 嗨客网(www.haicoder.net) select CONCAT(stu_no,'( ',stu_name,' )'),now(),CURDATE(),CURTIME(),DATE_FORMAT(birth,'%Y') FROM student;

运行结果如下

30 时间函数.png

时间函数也是对列进行操作。可以按照指定的参数格式进行数据操作,就可以得到自己想要的结果。

数值处理

数值常用函数有

函数名 描述
ABS() 返回一个数的绝对值
COS() 返回一个角度的余弦
EXP() 返回宇哥数的指数值
PI() 返回圆周率
SIN() 返回一个角度的正弦
SQRT() 返回一个数的平方根
TAN() 返回一个数的正切
-- 嗨客网(www.haicoder.net) select ABS(-2),COS(30),TAN(45),SIN(90),PI(),SQRT(4);

运行结果

31 数值函数.png

我们平时可以按照自己的诉求对数值进行操作,比如将学生成绩相加求总和,求平均值,都可以使用函数。

函数注意事项

每个 DBMS 都有特定的函数,它的可移植性不是很强。因为有的函数可以在 mysql 上使用,有的函数可以在 Sql Server 上面使用。

使用函数的字段不会走索引,如果数据量比较大的话,会影响性能。

函数总结

函数,可以让我们在原先的数据基础上对数据进行操作,获取到自己想要的结果,一般分为对字符操作,对时间操作和对数字操作。

字符操作,就是将大写转小写,字符去空等等。时间操作就是获取时间里面对应的数值,比如获取年月日,比较时间或者加减日期等等。

数据操作就是对数据进行加减乘除或者一些常用的数学操作,取绝对值等等。