您的位置:首页 > 数据库 > Oracle

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

2016-09-12 22:20 465 查看
操作数据库中最常就是查询语句

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

---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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle