当前位置:Gxlcms > 数据库问题 > JAVA入门到精通-第60讲-sqlServer基本查询

JAVA入门到精通-第60讲-sqlServer基本查询

时间:2021-07-01 10:21:17 帮助过:50人阅读

技术分享图片这样查询,效率比较低下;in 关键字,批量查询;技术分享图片select * from emp where  empno  in (123,  345,  800)
is null技术分享图片

技术分享图片
--使用逻辑操作符技术分享图片
--order by 排序 asc   升序;默认是升序; desc 降序;技术分享图片
技术分享图片
order  by 可以根据不同的字段排序;技术分享图片order by deptno ,  sal  desc
使用别名进行排序;技术分享图片实际上是种浪费,对字段取个别名,对别名进行排序;
--分页查询结果太多,不分页显示不方便;技术分享图片分页查询需要用到子查询;
表的复杂查询:技术分享图片select语句;
技术分享图片报错:min是聚合函数;
技术分享图片
首先执行(  )里面的;得到一个结果来使用:技术分享图片
把800作为一个结果来使用:技术分享图片
select语句优化的原则,把减少结果集的条件写在右边;
--avg技术分享图片
--count(*)技术分享图片
技术分享图片
技术分享图片
--group by技术分享图片10号 20号  30号 部门的平均工资的查询;
--多表查询
--显示每个部门每种岗位的平均薪水和最低工资技术分享图片
技术分享图片group  by  deptno,  job 
--having 对分组过后的结果进行筛选   往往和group by 结合使用;技术分享图片
技术分享图片having  avg(sal) < 2000
技术分享图片vv报错:语法是从右开始执行的,不知道vv是啥;
技术分享图片
技术分享图片
作业:建库,建表练习1、练习2
-----------------------------------------

表的复杂查询

说明:

    在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据,现在我们给

大家介绍较为复杂的select语句

数据分组 -max(最大),min(最小),avg(平均),sum(),count(统计)

见下例:

--如何显示所有员工中最高工资和最低工资

select min(sal)"最低工资",max(sal)"最高工资" from emp


--显示最低工资并显示出雇员名字

select ename"姓名",sal"工资" from emp where sal=(select min(sal) from emp)

--显示所有员工的平均工资和工资总和

select avg(sal)"平均工资",sum(sal)"工资总和" from emp

--把高于平均工资的雇员的名字和他的工资显示出来

select ename,sal from emp where sal>(select avg(sal) from emp) order by sal

--计算共有多少员工

select count(*)"雇员数" from emp

--扩展要求

--请显示工资最高的员工的名字、工作岗位

select ename,job from emp where sal=(select max(sal) from emp)

--请显示工资高于平均工资的员工信息,并显示平均工资(效率不高)

select ename"姓名",job"岗位",sal"工资",(select avg(sal) from emp)"平均工资" from emp where sal>(select avg(sal) from emp) order by sal

表的复杂查询

group byhaving子句

group by用于对查询的结果分组统计

having子句用于限制分组显示结果

例:

--group by和having子句使用(having与group by结合使用,可以对分组后的查询结果进行筛选)

--如何显示每个部门的平均工资和最高工资
select deptno"部门号",avg(sal)"平均工资",max(sal)"最高工资",min(sal)"最低工资" from emp group by deptno

--如何显示每个部门的平均工资和最高工资并显示部门名称(多表查询)
select emp.deptno"部门号",avg(sal)"平均工资",max(sal)"最高工资",min(sal)"最低工资",dept.dname"部门名称" from emp,dept where emp.deptno=dept.deptno group by emp.deptno,dept.dname
 
--显示每个部门的每种岗位的平均工资和最低工资
select deptno"部门号",job"岗位",avg(sal)"平均工资",min(sal)"最低工资" from emp group by deptno,job order by deptno
 
--显示平均工资低于2000的部门号和它的平均工资
select deptno"部门号",avg(sal)"平均工资" from emp group by deptno having avg(sal)<2000
 
--显示平均工资大于2000的部门号和它的平均工资并按升序排列
select deptno"部门号",avg(sal)"平均工资" from emp group by deptno having avg(sal)>2000 order by "平均工资"
 
17 1
--group by和having子句使用(having与group by结合使用,可以对分组后的查询结果进行筛选)
2
3
--如何显示每个部门的平均工资和最高工资
4
select deptno"部门号",avg(sal)"平均工资",max(sal)"最高工资",min(sal)"最低工资" from emp group by deptno
5
6
--如何显示每个部门的平均工资和最高工资并显示部门名称(多表查询)
7
select emp.deptno"部门号",avg(sal)"平均工资",max(sal)"最高工资",min(sal)"最低工资",dept.dname"部门名称" from emp,dept where emp.deptno=dept.deptno group by emp.deptno,dept.dname
8
 
9
--显示每个部门的每种岗位的平均工资和最低工资
10
select deptno"部门号",job"岗位",avg(sal)"平均工资",min(sal)"最低工资" from emp group by deptno,job order by deptno
11
 
12
--显示平均工资低于2000的部门号和它的平均工资
13
select deptno"部门号",avg(sal)"平均工资" from emp group by deptno having avg(sal)<2000
14
 
15
--显示平均工资大于2000的部门号和它的平均工资并按升序排列
16
select deptno"部门号",avg(sal)"平均工资" from emp group by deptno having avg(sal)>2000 order by "平均工资"
17
 

表的复杂查询

对数据分组的总结

1、分组函数只能出现在选择列表,havingorder by子句中

2、如果在select语句中同时包含有group byhavingovrder by那么他们的顺序是group byhavingorder by

3、在选择列中如果有列、表达式、和分组函数,那么这些列和表达式必需有一个出现在group by子句中,否则就会出错


如:

select deptno,avg(sal),max(sal) 
from emp group by deptno 
having avg(sal)<2000
 1
select deptno,avg(sal),max(sal) 
2
from emp group by deptno 
3
having avg(sal)<2000

这里deptno就一定要出现在group by
















来自为知笔记(Wiz)

JAVA入门到精通-第60讲-sqlServer基本查询

标签:keyword   abs   color   分页查询   als   get   精通   The   data-   

人气教程排行