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


    --批量查询
    这样查询,效率比较低下;
    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子句用于限制分组显示结果

     

    例:

     
     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 "平均工资"
    对数据分组的总结

     

    1、分组函数只能出现在选择列表,having、order 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
     



  • 相关阅读:
    Android SDK、NDK、JNI的简单介绍
    深入理解计算机系统—异常
    Jmeter3.1 使用及新增报告功能
    jmeter3.1连接数据库报错,ORA00923: 未找到要求的 FROM 关键字
    Jenkins插件、war下载地址
    jenkins自动打tag
    jenkins参数化构建过程
    Jmeter接口测试自动化(jmeter+ant+jenkins持续集成)
    既然选择开始就不会停下
    知识提升整体
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/10035721.html
Copyright © 2020-2023  润新知