SQL学习笔记——DQL-1( 基础查询,函数 )

2022-05-18  本文已影响0人  芥末海苔QAQ

DQL (所有SQL语句以;结尾,SQL语句不区分大小写)

简单查询


条件查询

不是将表中所有数据都查出来,是查询出来符合条件的。
语法格式:

排序( 默认升序 )

综合举例:

顺序select --> from --> where --> order by
找出工资再1250到3000之间的员工信息,要求按照降序排

select
  ename,salary
from
  etable
where
  salary between 1250 and 3000
order by
  salary desc;

数据处理函数 ( 又称:单行处理函数 )

多少条记录处理后结果还是多少条记录,处理完一条记录再处理下一条
常见单行处理函数:

select '字面量/字面值' from xtable

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

特点:输入多行,最终输出一行
分组函数使用时必须先进行分组,然后才能使用,
如果没有对数据进行分组,整张表默认为一组

注意:
1.分组函数自动忽略NULL(NULL不是一个值,是什么也没有)

2.分组函数中count(*)和count(具体字段)区别:
count(具体字段):统计该字段下所有不为NULL的元素的总数
count( * ):统计表当中的总行数(只要有一行数据,count则++。因为每一行记录不可能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的)
3.分组函数不能直接使用在where子句中
4.所有分组函数可以组合起来一起用


(重要)分组查询

先进性分组,然后对每一组的数据进行操作
select
 ...
from
 ...
group by
 ...
例:计算每个部门的工资和?
计算每个工作岗位的平均薪资?
找出每个工作岗位的最高薪资?

关键字执行顺序

where 后面不能加分组函数

select
 ...
from
 ...
where
 ...
group by
 ...
order by
 ...
执行顺序:from --> where --> group by --> select --> order by

例:找出每个工作岗位的工资和
select
  job,sum(sal), //有group by,select后面跟参加分组的字段,以及分组函数,否则没有意义并报错
from
  xtable
group by
  job;

两个字段联合分组
select
  a,b,max(c)
from
 xtable
group by
  a,b;

方法一:分组之后,根据条件显示
select 
  deptno,max(sal)
from
  xtable
group by
  deptno
having
  max(sal) > 3000;

方法二:筛选出sal大于3000的,再分组
select
  deptno,max(sal)
from
  xtable
where
  sal > 3000
group by
  deptno;

例:找出每个部门的平均薪资,显示平均薪资高于2500的

//按照部门分组
select
  deptno,avg(sal)
from
  xtable
group by
  deptno
having
  avg(sal)

例:找出每个部门,不同工作岗位的最高薪资

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

例:找出每个岗位的平均薪资,要求显示平均薪资大于1500的,除MANAGER岗位外,要求按照平均薪资降序排。

select
  job,avg(sal)
from
  xtable
where
  job!= 'MANAGER'
group by
  job
having
  avg(sal) > 1500
order by
  avg(sal) desc;

统计工作岗位的数量
select count (distinct job) from xtable;

上一篇 下一篇

猜你喜欢

热点阅读