MySQL基本函数,统计案例学习--SecondDay

一.基本函数

1.概述

Mysql数据库提供了丰富的函数,
常见的: lower upper length concat substr replace ifnull round/ceil/floor

2.测试

length求长度,(utf-8:一个字母算一个字符,一个汉字算3个字符)
在这里插入图片描述
substr截取子串

#查部门名称
#substr(1,2,3)截取字符串-1是字段名2是开始位置3是总长度
SELECT dname,SUBSTR(dname,2),SUBSTR(dname,2,3) FROM dept

在这里插入图片描述

#replace(1,2,3)替换-1是字段名2是要被替换的3是新的数据
SELECT dname,REPLACE(dname,'o','666') FROM dept

在这里插入图片描述

#ifnull(1,2)判断是否为null,如果是null就替换成0-1是字段名2是要替换的值
SELECT comm,IFNULL(comm,0) FROM emp
SELECT *,sal+IFNULL(comm,0) FROM emp

在这里插入图片描述
在这里插入图片描述
floor:向下取整,
ceil:向上取整,
round:四舍五入
在这里插入图片描述
select now():获取年 月 日 时 分 秒
在这里插入图片描述
select curdate():获取年 月 日
在这里插入图片描述
select curtime():获取时 分 秒
在这里插入图片描述
select year():获取年份
在这里插入图片描述

转义字符

作为sql语句符号,内容中出现单撇就会乱套,进行转义即可

select 'ab'cd' -- 单引号是一个SQL语句的特殊字符
select 'ab\'cd' --数据中有单引号时,用一个\转义变成普通字符

条件查询

distinct:

使用distinct关键字,去除重复的记录行

#查询部门地址
SELECT  loc FROM dept;
#用来去重
SELECT  DISTINCT loc FROM dept;

在这里插入图片描述

where

注意:where中不能使用别名

#where满足条件的才查出来
#查询deptno等于1的部门记录 SELECT * FROM dept WHERE 字段名=地址值;
SELECT * FROM dept WHERE deptno=1;
#查询地址在一区的部门记录
SELECT * FROM dept WHERE loc='一区';
#查询地址在二区的部门名称
SELECT dname FROM dept WHERE loc='二区';
#根据名称查询部门记录
SELECT * FROM dept WHERE dname='delete';
SELECT * FROM dept WHERE dname='abc';
#根据名称和地址值  查询部门记录
SELECT * FROM dept WHERE deptno=4 AND loc='二区';
SELECT * FROM dept WHERE deptno=4 or loc='二区';

#查询工资大于8000的员工信息
SELECT * FROM emp WHERE sal > 8000;
#查询工资等于8000的或者工资等于3000员工信息
SELECT * FROM emp WHERE sal=8000 OR sal=3000;
SELECT * FROM emp WHERE sal IN(3000,8000);
SELECT * FROM emp WHERE empo IN(100,300,500);
like

通配符%代表0到n个字符,通配符下划线_代表1个字符

#like 像,模糊查询 % 动态匹配0~n个字符 _下划线代表一个字符
#查询名字里包含a的员工信息
SELECT * FROM emp WHERE ename LIKE '%a%'; 
#查询员工名字以l开头的员工的信息
SELECT * FROM emp WHERE ename LIKE 'l%';

在这里插入图片描述

null
#查询mgr是null 的员工信息
SELECT * FROM emp WHERE mgr IS NULL;
#查询mgr不是null 的员工信息
SELECT * FROM emp WHERE mgr IS NOT NULL;

在这里插入图片描述

between and
#查询工资3000到10000的员工信息
SELECT * FROM emp WHERE sal>=3000 AND sal<=10000;
SELECT * FROM emp WHERE sal BETWEEN 3000 AND 10000;
#查询2015年到2019年入职的员工的信息
SELECT * FROM emp WHERE YEAR(hiredate) BETWEEN 2015 AND 2019;

在这里插入图片描述

limit
#limit分页
SELECT * FROM emp  LIMIT 2;#只查前2条
#第一个数字是开始位置,第二个是总条数
SELECT * FROM emp  LIMIT 1,2;

在这里插入图片描述

order by
#order by   默认升序 
SELECT * FROM emp ORDER BY sal ASC;#升序
SELECT * FROM emp ORDER BY sal DESC;#降序
SELECT * FROM emp WHERE hiredate IS NOT NULL ORDER BY YEAR(hiredate) ASC;#按照日期的进行排序、
SELECT * FROM emp ORDER BY ename ;
SELECT * FROM emp ORDER BY job;
#拿着每个汉字对应的数字(utf8),升序排序

在这里插入图片描述

二.统计案例

#统计2019年入职的员工
SELECT * FROM emp WHERE YEAR(hiredate)=2019;
#统计2017年以前入职的员工、
SELECT * FROM emp WHERE YEAR(hiredate)<2017;
#统计2015~2017年入职的员工
SELECT * FROM emp WHERE YEAR(hiredate) BETWEEN 2015 AND 2017;
#统计员工入职了几年
SELECT *,YEAR(NOW())-YEAR(hiredate) FROM emp WHERE hiredate IS NOT NULL ;

在这里插入图片描述

#注:接MySQL函数,事务学习–ThirdDay

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望山。

谢谢您的打赏!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值