2.mysql函数的使用

mysql中的函数:
ifnull(x,y)
concat(a,b,c)

文本函数:
left(字段,n) : 截取字段前面n个字符
例: 查询学生表中每个学生的姓名和姓
select sname,left(sname,1) from t_student;
right(字段,n) : 截取字段后面n个字符
例: 学生英文的第3个字符
select sename, right(left(sename,3),1) from t_student;
length(字段) 查询这个字段的长度
select sname,length(sname) from t_student;

Locate(sub,str) : 返回sub在str中出现的位置(类似于java的indexOf)
lower(str) : 将str中的字母全部转小写
upper(str) : 将str中的字母全部大写
REVERSE(s):将字符s反转
select sename ,reverse(sename) from t_student;
substring(str,pos,len):截取str中的子字符串从pos开始 一共截取len长度

时间日期函数:
curdate() CURRENT_DATE() ; : 这个函数不需要参数,而且跟表没有关系
例: 查询系统日期: select curdate();
insert into t_student(sid,sname,sdate) values(1,'abc',curdate());

获取系统时间 curtime();
获取系统日期时间 now();

month(date) 返回date中的月份,方法的参数是一个日期
例: 查询每个学生的姓名,及他出生的月份
select sname,month(sbir) from t_student;
select MONTHNAME(now());
DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d)
select dayname(now()),dayofweek(now()),weekday(now()) from t_student;
select WEEKOFYEAR(now());
DAYOFYEAR(d)

例: 查询每个学生的姓名,生日,及生日是当前年的第多少天
select sname,sbir,dayofyear(sbir) from t_student;

adddate(sbir,100) 100天以后是什么日期
addtime(s,100) : 100秒以后是什么时间
select adddate(now(),100);
datediff(date1,date2);返回两个日天间隔多少天
timediff(time1,time2) :返回两个时间间隔多少秒


datediff(now(),sbir);

DATE_FORMAT(date,format) : 将一个日期时间 按照format格式来打印
例: 查询每个学生的姓名和生日,生日按照(****年**月**日)
select sname,date_format(sbir,'%d日-%m月-%Y年') from t_student;

select date_format(now(),'%Y年+%m月') as 日期;


聚集函数 一共5个:
count max min avg sum

用法: 函数名(字段) .
聚集函数返回的只有一个值。不能使用聚集在where中筛选。因为在筛选之前
聚集函数的值要先找到。
在非分组语句中,聚集函数不能跟普通字段一起使用。
count是统计一共多少行,跟里面的数据没有关系。

select max(sscore) from t_student;
例: 查询3班学生中最大的年龄
select max(sage) from t_student where sclass=3;

例: 查询表中年龄最大的学生的姓名
//select max(sage),sname from t_student ;

//select max(sscroe),sname from t_student;

例: 求2班的男生的平均年龄:
select avg(sage) from t_student where sclass=2 and ssex='男';
例: 求表中最大分数、最小分、平均分。
select max(sscore),min(sscore),avg(sscore) from t_student;

select sum(sage) from t_student;

select sage/sum(sage) from t_student;

//一共多少行a 每一页多少行b 一共分了多少页c 当前在几页d
select * from t_student limit (d-1)*b,b :

例: 统计表中有多少个姓名
select count(sname) from t_student;

select count(distinct sclass) from t_student;

例: 统计表中一共多少行数据
select count(*) from t_student;
统计表中一共多少个女生:
select count(*) from t_student where ssex='女';

原文地址:https://www.cnblogs.com/makalochen/p/10656261.html