MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。例如,字符串连接函数可以很方便的将多个字符串连接在一起。
mysql中的列可以当成变量来看,既然是变量,就可以参与运算(+ - * / 加减乘除)
select 3+2;
select 3*2;
这几类分别举个例子,讲解几个函数
一、floor(x) 返回小于x的最大整数值
# goods表的shop_price取出整数
select goods_id,goods_name,floor(shop_price) from goods;
二、rand()返回 0 到 1 内的随机值
可以通过提供一个参数(种子)使rand()随机数生成器生成一个指定的值
# 生成随机5-10的值
select rand();
select floor(5+rand()*5);
# 随机在用户表取一条数据
select * from user order by rand() limit 1;
三、left(str,x)返回字符串str中最左边的x个字符
create table t27 (
email char(20)
);
插入 email 数据
insert into t27 values ('abc@163.com'),('123456@qq.com');
我们想要分别统计各邮箱种类的使用率,需要将email字段截取成两部分
select left(email,3) from t27;
我们需要获取@的位置,将@前面的截取出来,position(substr in str) 返回子串substr在字符串str中第一次出现的位置
select position('@' in email) from t27;
select left(email,position('@' in email)-1) from t27;
四、now() 返回当前的日期和时间
select now();
date_format(date,fmt) 依照指定的fmt格式格式化日期date值
# 注意跟要加百分号%
select date_format(now(),'%Y/%m);
五、连接函数concat()
select concat('id:',id) id,concat('user:',username) user,concat('pass:',password) pass from user;
select id,username,password,concat(id,'-',username,'-',password) iduserpass from user;
六、group by分组聚合的使用
按条件进行分组,然后在分组的基础上进行有条件的聚合
#统计每个班的总人数:
select concat(class,' 班') 班级,concat(count(*),' 人') 人数 from user group by class;
#分组聚合
select class,max(id) max_id,min(id) min_id,count(id) count_id,sum(id) sum_id,avg(id) avg_id from user group by class;