MySQL学习第六天(模糊查询、排序、单组处理函数)

一、like(模糊查询)

支持%或下划线匹配(%匹配任意多个字符,下划线匹配一个字符)

找出名字中含有o的员工信息

select * from emp where ename like '%o%';

找出名字以T结尾的

select * from emp where ename like '%T';

找出第二个字母是A的

select * from emp where ename like '_A%';

找出名字中有下划线的(\转义字符)

select * from emp where ename like '%\_%';

二、排序

1、一个字段排序

查询所有员工薪资,排序(order by——默认升序

select ename,sal from emp order by sal;

指定升序(添加asc

select ename,sal from emp order by sal asc;

指定降序(添加desc)

select ename,sal from emp order by sal desc;

2、多字段排序(按照多个字段排序)

查询员工名字和薪资,要求按照薪资升序,薪资一样,再按照名字升序排列

select ename,sal from emp order by sal asc,ename asc;

3、根据字段位置排序(不建议采用)

select ename,sal from emp order by 2;//按照查询结果的第二列排(不建议采用,列的顺序会修改)

三、综合练习

1、找出工资在1250到3000的员工信息,要求按照薪资降序排列

select ename,sal from emp where sal between 1250 and 3000 order by sal desc;

2、执行顺序:

  • 第一步:from
  • 第二步:where
  • 第三步:select
  • 第四步:order by(排序最后执行)

四、函数

(一)数据处理函数(单行处理函数)

1、特点

  • 单行处理函数:一个输入对应一个输出(记录数量不变)
  • 多行处理函数:多个输入对应一个输出(如求和等运算得出一个结果)

2、类型

①Lower转换小写

select lower(ename) Lower_ename from emp;

②upper转换大写

substr取子串substr(被截取的字符串,起始下标,截取的长度)

注意:起始下标从1开始

select substr(ename,1,1) Sub_name from emp;

找出员工名字第一个字母是A的员工信息

select * from emp where substr(ename,1,1) = 'A';

④concat字符串拼接

首字母小写

select concat(lower(substr(ename,1,1)),substr(ename,2,length(ename)-1)) concat_ename from emp;

⑤length取长度

select length(ename) ename_length from emp;

⑥trim去空格

select * from emp where ename= trim('   KING');

⑦round四舍五入

  • round(数值,保留的小数位)
  • round(数值,-1):保留到十位

select后面可跟字段名(变量名),也可以跟字面值(数据)

select round(1234.567,0) num from emp;

⑧rand生成随机数

select rand() from emp;

⑨ifnull空处理函数(将null转换成一个具体值)

用法:ifnull(数据,被当作哪个值)——如何数据为Null,把这个数据结果当作哪个值

在数据库中,只要有null参与的数学运算,最终结果就是null

select ename,sal+comm salcomm from emp;

查询员工年薪(年薪=(月薪+补贴)*12)

select ename,sal,comm,(sal+ifnull(comm,0))*12 yearsal from emp;

⑩case...when...then...when...then...else...end(难点)

当员工的工作岗位是manager的时候,工资上调10%,当工作岗位是salesman的时候,工资上调50%(注意,不修改数据库,只是将查询结果显示为工资上调)

select 
	ename,
	job ,
	sal oldsal,
	(case job  when 'manager' then sal*1.1 when 'salesman' then sal*1.5 else sal end) newsal
from 
emp;

(二)多行处理函数(分组函数)

1、特点

输入多行,最终输出一行

注意:

  • 分组函数在使用的时候必须先进行分组,然后才能用(如果没有对数据进行分组,整张表默认为一组)
  • 分组函数自动忽略null,不需要对null提前处理
  • 分组函数不能直接使用在where子句中

2、类型

①count计数

注意:count(*)和count(具体字段)区别

  • count(*):统计总行数(只要有一行数据count则++)
  • count(具体字段):表示统计字段下所有不为null的元素总数

②sum求和

③avg平均值

④max最大值

⑤min最小值

3、分组函数不能直接使用在where子句中

找出比最低工资高的员工信息?

4、所有的分组函数可以组合一起用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值