狂人日记day7

狂人日记day7

排序

select ename,sal

-> from emp

-> order by

-> sal;

  • 默认按照升序排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qf5V4klM-1621257797868)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517191823337.png)]

降序

select ename,sal

-> from emp

-> order by

-> sal desc;

指定升序

select ename,sal

-> from emp

-> order by

-> sal asc;

多个字段排序

查询名字薪资,按薪资升序,如果一样按照 名字升序

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6oDtw3CM-1621257797869)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517192050730.png)]

sal 在前 起主导 只有 sal相等时按ename排

根据字段位置排序

select ename,sal from emp order by 2;

表示按照表中第二列排序

列的顺序容易改变 不建议写

综合案例

工资在1250 到3000之间 按照升序排列

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jjg33TjG-1621257797869)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517192718130.png)]

单行处理函数

特点:一个输入对应一个输出

单行处理函数常见

lower 转换小写

upper 转换大些

substr 取字符串

​ 起点是一

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buHvjBk4-1621257797870)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517193603484.png)]

select ename from emp where substr(ename,1,1) = ‘A’;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w6ruL4qk-1621257797870)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517193831615.png)]

首字母大写

concat是字符串拼接

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gH7v6tSw-1621257797870)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517194517858.png)]

length 取长度

trim 去空格

select trim(’ king’); 变成 ‘king’

str_to_date 将字符串转换为日期

data_format 格式化日期

format 设置千分位

round 四舍五入

select round(12345.667,0) as result from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9G0hNhwl-1621257797871)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517195237522.png)]

select round(12345.667,1) as result from emp;

保留一位小数

select round(12345.667,-1) as result from emp;

保留到5前一位 十位

Rand()生成随机数

select rand() from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gObnZpaI-1621257797871)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517195447808.png)]

ifnull 可以将null转换为一个具体值

null 参与的数学运算 最后结果就是null

select ename,sal + comm as salcomm from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJd0iAmI-1621257797871)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517195631871.png)]

If null(数据,被当作哪个值)

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zzXdm1g2-1621257797871)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517195905111.png)]

case when then when than else end

当员工工作岗位为mannager时 工资上调10% 当岗位为salesman时 上调50%

select ename,job,(case job when ‘MANAGER’ then sal1.1 when ‘SALEMAN’ then sal1.5 else sal end) as newsal from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OoJkEfcm-1621257797872)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517200556399.png)]

分组函数

特点:多个输入对一个输出

Count

sum

avg

max

min

必须先分组才能用

分组函数使用时

  • 自动忽略null
  • 分组函数中count(*)代表整个一行的记录 不可能全为null
  • count(具体字段)区别改字段下不为null的元素总数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-njk8G5eE-1621257797872)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517201050417.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iqKT27cC-1621257797872)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517201120874.png)]

  • 分组函数 不能直接使用在where子句中 找出比最低工资高的员工信息

select ename ,salfrom emp where sal> min(sal);报错

因为分组函数在使用时必须分组后才能用

where 执行时没分组

select sum(sal) from emp;

因为select在groupby后执行

  • 所有分组函数可以组合起来一起用

分组查询

先对数据分组再进行计算

select from group by

select from where group by order by

执行顺序

​ 1 from

​ 2 where

​ 3 group by

​ 4 select

​ 5 order by

找出每个工作岗位的最高工资和

Select sum(sal) from emp group by job;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQAssQ5T-1621257797872)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517203257697.png)]

select deptno,max(sal)from emp group by deptno;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xs4N3Jf5-1621257797873)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517203716140.png)]

找出每个部门不同岗位的最高薪资

两个字段联合成一个字段看

select deptno,job ,max(sal) from emp group by deptno,job;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0umlvKFV-1621257797873)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517204604873.png)]

使用having子句可以对分完组之后数据进行再次过滤 不能单独使用

select deptno,max(sal) from emp group by deptno having max(sal) > 3000;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7rO9mDl-1621257797873)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517205513581.png)]

如果加job编译错误

另一种方法 先将大于3000 的都找出来

select deptno,max(sal) from emp where sal>3000 group by deptno;

下面这个报错了

问题解决:是mysql版本机制问题select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行,其实这个配置目前个人感觉和distinct差不多的,所以去掉就好

! select deptno,sal from emp where sal>3000 group by deptno;

优先用where

去除重复记录

使用Distinct

select distinct job from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2zcOSfVc-1621257797873)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517211957112.png)]

select ename,distinct job from emp;

报错 ename超出

把distinct 放在前方 是联合的去除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MPHX5Uxx-1621257797874)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517212131866.png)]

统计工作岗位数量

select count(distinct(job)) from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9nDMFtbY-1621257797874)(/Users/suannai/Library/Application Support/typora-user-images/image-20210517212215110.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值