MySQL学习笔记-Mysql函数

以下所有演示依赖MySQL自带表emp,dept和salgrade表

统计函数

1、合计/统计函数-count

count(*)统计所有行数
count(列名)统计当前列非空行数

select * from emp;
-- 统计emp表总行数
select count(*) from emp;
-- 统计comm列的非空行数
select count(comm) from emp;

合计函数-sum、avg、max、min
sum函数返回满足where条件的行的和

-- 统计薪水的总和
select sum(sal) from emp;
-- 统计工作位MANAGER的人的薪水总和
select sum(sal) from emp where job='MANAGER';

avg函数返回满足where条件的列的平均值

-- 统计薪水的平均值
select avg(sal) from emp;
-- 统计工作位MANAGER的人的薪水平均值
select avg(sal) from emp where job='MANAGER';

max、min函数统计满足where条件的列的最大值和最小值

-- 统计薪水的最大值和最小值
select max(sal),min(sal) from emp;
-- 统计工作位MANAGER的人的薪水最大值和最小值
select max(sal),min(sal) from emp where job='MANAGER';

分组统计

group by对列进行分组,having对分组后的结果进行过滤

--分组统计,利用mysql数据库中自带的emp,dept,salgrade三张表进行演示
--统计每个部门的平均薪水
select avg(sal),deptno from emp group by deptno;
--统计每个部门每个工作的平均薪水
select avg(sal),job,deptno from emp group by deptno,job;
--统计平均薪水低于2200的部门和平均薪水
select avg(sal) as avgsal,deptno from emp group by deptno having avgsal < 2200;

-- 按工作进行分组且去掉没有奖金的员工
select * from emp group by job having comm is not null;

字符串函数

字符串函数

--字符串函数
select charset(ename) from emp;
select concat(ename,' job is ',job) from emp;
select instr('qwertyuiop','tyu') from dual; --dual 亚元表,系统表
select ucase(ename) from emp;
select lcase(ename) from emp;
select left(ename,2) from emp;
select right(ename,2) from emp;
select length('hello world') from dual; --按字节返回
select ename,replace(job,'MANAGER','jl') from emp;
select strcmp('qwe','qwe') from dual;
select strcmp('qwe','awe') from dual;
select substring(ename,1,2) from emp;
select ltrim('  qwe') from dual;
select rtrim('qwe  ') from dual;
select trim('  qwe  ') from dual;

数学函数

数学函数

日期函数

日期函数

-- 查询在10分钟内发布的消息,msg是一个带有日期的表
select * from msg where date_add(time,interval 10 minute) >= now();
-- 查询现在是多少年
select year(now()) from dual;
-- unix_timestamp() 返回1970-1-1到现在的秒速
select unix_timestamp() from dual;
-- from_unixtime()可以把一个unix_timestamp秒数转换为指定格式的日期
select from_unixtime(1234567890) from dual;

加密函数

加密函数

流程控制函数

流程控制函数

select comm,if(comm,'true','false') from emp;
select comm,ifnull(comm,'为null') from emp;
-- 不在条件内的就变为null并不是保持原值
select job,case when job='CLERK' then '职员' when job='MANAGER' then '经理' when job='SALESMAN' then '销售' end from emp;

查询增强

在MySQL中时间的比较可以直接使用大于小于号比较
like模糊查询时%表示0到多个字符,_表示一个字符

分页查询

select * from 表名 limit start,rows;
表示从start+1行开始取,取rows行,start从0开始计算

多子句查询

select column1,column2... from table
							group by column
							having condition
							order by column
							limit start,rows;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值