oracle 单表查询 添加各种查询条件

操作数据库中最常就是查询语句

但是在查询的通常需要添加条件

---emp  员工表
----dept  部门表
----salgrade  工资等级表
--查询语句:
/*
语法:
select   列名列表
from 表名
[where 查询条件]
[order by  列名 ASC|DESC]
*/
--查询所有行所有列的数据
select * from emp;
--
select empno,ename,job,mgr,hiredate,sal,comm,deptno
from emp;
--查询部分列:
select empno,ename,job,sal,deptno
from emp;
--查询员工的年薪(编号,姓名,职位,年薪)
select empno,ename,job,(sal*12)
from emp;
--给列起别名  [as] 别名
select empno,ename,job,(sal*12) as "year Sal"
from emp;
-------------------部分行的数据
--查询员工工资高于2000的信息(编号,姓名,职位,工资)
select empno,ename,job,sal
from emp
where sal>2000;

--查询员工信息(编号:姓名)  7369:SMITH  CONCAT(str,str2)
select empno,ename,concat(concat(empno,':'),ename) empinfo
from emp;
--||:连接符
select empno||':'||ename empinfo
from emp;

-----------any,all
--查询员工编号为7369,7788,7844中任意一个的信息
select empno,ename
from emp
--where empno in(7369,7788,7844);
where empno=any(7369,7788,7844);
---------------------------------------order by
--查询员工信息
select empno,ename,job,sal,deptno
from emp;
--查询员工信息,并按工资升序显示
select empno,ename,job,sal,deptno
from emp
order by sal desc;
--查询员工信息,每个部门中工资升序显示(先按部门排序升序,然后每个部门中的工资升序显示)
select empno,ename,job,sal,deptno
from emp
order by deptno,sal desc;

--查询员工的职位  --去除相同的数据:distinct  去除查询结果中的重复行
select distinct job from emp;


聚合函数和分组

--查询
/*
select 列名列表
from 表名
[where 查询条件]  --分组前的条件筛选
[group by 分组列
[having 分组后的条件筛选]
]
[order by 列名 asc|desc]

------------
where -->group by -->having
1、where 是分组前的数据筛选,having分组后的数据的筛选
2、having可以使用聚合函数
3、having不能独立使用,一定与group by 一起使用
------------------分组的注意事项
1、分组查询与聚合函数一起使用,
2、不能和可以返回多行的列一起查询
*/
--聚合函数: 对多行数据操作返回一个结果
/*
sum:求和
avg:平均值
sum,avg:只能应用于数值类型的列
count:统计个数
max:最大值
min:最小值
注意:
1、忽略null值
2、查询时,使用聚合函数,则不能和可能返回多行的列一起查询
3、聚合函数不能使用在where子句中
*/
--计算员工的总工资:
select sum(sal)sumSal from emp;
--计算平均工资
select avg(sal) avgSal from emp;
--统计公司员工的人数(不要写包含null的列)  主键和rowid
select count(rowid) from emp;
select rowid,empno from emp;
--最高工资:
select max(sal) maxSal,min(sal) minSal from emp;
--分组查询

--统计每个部门中人数
select count(rowid),deptno
from emp
group by deptno;
--查询每个职位的员工人数
select count(rowid),job
from emp
group by job;
--查询每个领导的下属人数 mgr
select count(rowid),mgr
from emp
group by mgr;
--查询每个部门中最高工资
select deptno,max(sal)
from emp
group by deptno;
--统计每个部门中工资高于2000的员工人数
select deptno,count(rowid)
from emp
where sal>2000
group by deptno;

--查询总人数超过6人的部门
select deptno,count(rowid)
from emp
group by deptno
having count(rowid)>6;
--查询每个部门中工资高于 2000的员工人数,显示人数超3人的部门
select deptno,count(rowid)
from emp
where sal>2000
group by deptno
having count(rowid)>3;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值