本博文源于mysql,旨在对mysql中的函数进行详细训练。
数值型函数,大家可以理解为高级语言中的函数,直接跟高级语言函数一般使用就行了。
格式ABS(x)
SELECT ABS(5),ABS(-2.4),ABS(0);
求余函数,格式MOD(x,y)
SELECT MOD(63,8),MOD(22,10);
平方根函数SQRT(x);
select sqrt(4),sqrt(5);
高数中的符号函数SIGN(X)
select SIGN(5),SIGN(-2),SIGN(0);
格式CEIL(X),CEILING(X)
返回不小于x的最小整数值
select CEIL(-2.5),CEILING(6.2);
格式
SIN(X)
COS(X)
TAN(X)
ASIN(X)
ACOS(X)
ATAN(X)
这些大家都应该看得懂,下面演示正弦
select SIN(1),SIN(0.5*PI());
求长度函数,格式LENGTH(字符串)
select length('name'),length('zhangsan');
小写变大写UPPER(X)
大写转小写LOWER(X)
SELECT UPPER('green'),LOWER('Blue');
这个跟MATLAB的函数类似,从左边从右边,python好像也有LEFTLEFT(S,X)
返回字符串从左边x长度的字符串,同理RIGHT(S,X)
返回从右边x长度的字符串
select left('name',2),right('name',2);
CONCAT(s1,s2,…)函数返回结果为连接参数产生的字符串,或许有一个或多个参数,若有一个参数为NULL,返回NULL
select concat('name',':zhangsan'),concat('name',NULL);
删除空格函数TRIM(s)
删除字符串s两侧的空格
select trim(' name ');
替换字符串函数INSERT(s1,x,len,s2)
返回字符串s1,子字符串起始于x位置,并且用len个字符长的字符串代替s2,若x超过字符串长度,则返回为原始字符串。假如len的长度大于其它字符串的长度,则从位置x开始替换。若任何一个参数为NULL,则返回值为NULL
SELECT INSERT('Football',2,4,'Play'),
INSERT('Football',-1,4,'Play'),
INSERT('Football',3,20,'Play');
第一个INSERT比较规矩,第二个从-1开始,-1就是末尾因此大于4所以直接返回原字符串,后面因为起始于小于长度,直接从第三个位置全部直接替换为Play。
格式SUBSTRING(s,n,len)
跟高级语言类似,在s字符串的第n位置剥离len长度字符串。n若是负数直接从末尾数的倒数几个开始截取。
SELECT substring('mysql',2,2),substring('mysql',-2,2);
跟高级语言类似REVERSE(s)
反转字符串
select REVERSE('HELLO');
也差不多,替换字符串函数REPLACE(s,s1,s2)
使用字符串s2替换字符串s中所有的字符串s1
select replace('aaa.mysql.com','a','w');
一个是当前时间,一个是系统时间,如果一切正常,那肯定是相等。相信大家也遇到两者时间不等的情况,可以类比记忆windows系统时间不准,链接网络校准时间。
select now(),sysdate();
两者函数类似,都是打印出当前日期
select curdate(),current_date(),current_date()+0;
两者函数类似,都是打印出当前时间
select curtime(),current_time(),current_time()+0;
都是返回指定日期在某一周内的位置,第一个是将周日当作1开始,第二个函数是将周一当作0开始的。
select DAYOFWEEK(CURDATE()),WEEKDAY(CURDATE());
字面意思理解一个是日期在一年中的位置,一个是日期在一个月中的位置。
select dayofyear(CURDATE()),dayofmonth(CURDATE());
按照英文f翻译成中文的理解,一个是返回日期中的月份,一个是返回日期中月份的英文名称
select month(CURDATE()),monthname(CURDATE());
这个函数格式比较特殊DATEDIFF(date1,date2)
是指date1-date2
select datediff(CURDATE(),curdate()-1),datediff(CURDATE(),curdate()+2);
这个是执行日期加的操作ADDDATE(date,INTERVAL expr type)
select adddate('2020-6-20 9:59:59',interval 1 second),
adddate('2020-6-20 9:59:59',interval '1:1' MINUTE_SECOND);
演示下面的聚合函数,需要创建这样一张表:
自身如果没有test_db数据库的,自己创一个做练习
CREATE DATABASES test_db;
USE test_db;
create table tb_students_score
-> (student_name VARCHAR(10) PRIMARY KEY,
-> student_score INT(4));
并插入这样的信息
INSERT INTO tb_students_score values('zhangsan',99);
INSERT INTO tb_students_score values('wnagmei',44);
INSERT INTO tb_students_score values('liushuai',89);
函数的含义为求取最大值,
select MAX(student_score) as max FROM tb_students_score;
这个与max类似,直接上例子
select MIN(student_score) as min FROM tb_students_score;
count分为两种情况,一种是COUNT(*)
计算表中总的行数,无论某列有数值或者为空值.COUNT(字段名)
计算指定下列总的行数,计算时忽略空值的行。
select count(*) from tb_students_score;
select count(student_name) from tb_students_score;
这个是求平均的函数,来个例子加深影响
select avg(student_score) as avg from tb_students_score;