Oracle数据库Scott用户查询练习

发布于 2020-11-17  159 次阅读


//查询scott用户下的所有表
select TABLE_NAME from all_all_tables where owner='SCOTT';

//查询工资大于1500的员工
select empno,ename,sal from emp where sal >1500;
//查询销售员工资大于1500的员工
select * from emp where job='SALESMAN' and sal>1500;
//查询以字母S开头的员工
select empno,ename,JOB from emp where ename LIKE 'S%';
//查询不是以S开头的员工
select empno,ename,JOB from emp where ename not LIKE 'S%';
//查询职务时SALEAMAN的员工名称
select empno,ename,JOB from emp where job LIKE 'S_L_S%';
//查询出员工编号是7369、7788、7566的任意一个员工信息
select * from emp where empno in (7369,7788,7566);
//查询出员工编号不是7369、7788、7566的任意一个员工信息
select * from emp where empno not in (7369,7788,7566);
//查询工资在2000到3500之间的员工信息
select empno,ename,sal from emp where sal between 2000 and 3500;
//查询所有不领取奖金,同时工资大于2000元的全部员工信息
select * from emp where comm is null and sal >2000;
//计算平均工资、所有工资的总和以及最高工资和各组的行数
select job,avg(sal),sum(sal),max(sal),count(job) from emp group by job;
//显示每个部门的每种职位的平均工资和最高工资
select deptno,job,avg(sal),max(sal) from emp group by deptno,job;

//在聚集查询如avg()不能加在where后面,需要使用having
//统计出每个部门的平均工资大于2000的记录信息
select deptno as 部门编号,avg(sal) as 平均工资 from emp group by deptno having avg(sal)>2000;

//按照工资由高到底排序,如果工资相等则按照入职日期由早到晚进行排序
select * from emp order by sal desc;
select * from emp order by sal desc,hiredate asc;

//查询经理所在的部门名称  
//注意:1.设置在from字句后 2.设置了表别名后不能再使用表名
//3.表名只对当前select语句有效
select e.empno as 员工编号,e.ename as 员工名称,d.dname as 部门
from emp e,dept d where e.deptno=d.deptno and e.job='MANAGER';
//通过deptno字段连接emp和dept表  多表级联查询  内连接
select e.empno as 员工编号,e.ename as 员工名称,d.dname as 部门
from emp e inner join dept d on e.deptno=d.deptno;
//多表级联查询 外连接 --〉 左外连接 left join
insert into emp(empno,ename,job) values(9527,'EAST','SALESMAN');
select e.empno,e.ename,e.job,d.deptno,d.dname from emp e left join dept d
on e.deptno=d.deptno;

//多表级联查询 外连接 --〉 右外连接 right join
select e.empno,e.ename,e.job,d.deptno,d.dname from emp e right join dept d
on e.deptno=d.deptno;

//多表级联查询 外连接 --〉 完全外连接 full join
select e.empno,e.ename,e.job,d.deptno,d.dname from emp e full join dept d
on e.deptno=d.deptno;

//多表级联查询 自然连接  -- natural join 
select empno,ename,job,dname from emp natural join dept where sal > 2000;

//查询所有管理者所管理的下属员工信息
select em1.empno 员工编号,em1.ename 员工姓名,em2.empno 领导编号,em2.ename 领导姓名
from emp em1 LEFT JOIN emp em2 on em1.mgr=em2.empno;


我们都要做生活的高手。