Oracle day3

--DDL:data definition language,数据定义语言,创建修改删除表
--DQL:data query language,数据查询语言,查询数据
--DML:data manipulation language,数据操作语言,增删改数据
--DTL:data transaction language,数据事物语言,用来处理事务,例如开启、提交事务
--DCL:data control languange,数据控制语言,用来操作用户和权限,例如创建用户,授权等
--SQL 是 Structured Query Language(结构化查询语言)

/*合并集合(sql语句查询的结果)的注意点:
结果的列名是以第一个查询的列名为准;
每个查询必须包含相同的列、表达式或聚集函数(即字段顺序、数量一致);
集合对应列的类型要匹配(数字,’字符串’)。*/

--合并结果集,不删除重复元素(效率比union高)
select * from emp where sal > 1000
union all
select * from emp where sal < 3000;

--合并结果集,删除重复元素
select * from emp where sal > 1000
union 
select * from emp where sal < 3000;

--交集:结果集中的重复元素
select * from emp where sal > 1000
intersect
select * from emp where sal < 3000;

--差集:我有你没有
select * from emp where sal > 1000
minus
select * from emp where sal < 3000

select ename,deptno from emp
union all
select dname,deptno from dept


select * from emp where sal > 
(select avg(sal) from emp where deptno = 10);

select * from emp where sal in 
(select sal from emp where deptno = 20);

--26.查询各种工作的最低工资:
select job 职位,min(sal) 最低工资 from emp group by job;

--27.查询各个部门中的不同工种的最高工资:
select deptno 部门,job 职位,max(sal) 最高工资 from emp group by deptno,job;

--28.查询每个领导‘mgr’手下有多少人:
select mgr 领导,count(*) 员工人数 from emp group by mgr;

--29.查询与姓名中包含字母‘U’的员工在相同部门的员工信息:
select * from emp where deptno in (select deptno from emp where ename like '%U%');

--30.统计各个职位的员工人数与平均工资:
select job 职位,count(*) 员工人数,avg(sal) 平均工资 from emp group by job;

--31.查询每个部门的最早入职日期和最晚入职日期:
select deptno 部门,min(hiredate) 最早入职,max(hiredate) 最晚入职 from emp group by deptno;

--32.查询名字中包含字母‘E’且姓氏不以‘A’开头的员工信息:
select * from emp where ename like '%E%' and ename not like 'A%';

--33.显示工资比‘ALLEN’高的所有员工的姓名和工作:
select ename,job from emp where sal > (select sal from emp where ename = 'ALLEN');

--34.显示与‘scott’从事相同工作的员工信息:
select * from emp where job = (select job from emp where ename = 'scott');

--35.查询所有工资高于平均工资‘包括所有员工’的销售人员:
select * from emp where job = 'SALESMAN' and sal > ( select avg(sal) from emp );

--36.显示与30号部门‘MARTIN’员工工资相同的员工的姓名和工资:
select ename,sal from emp where sal = (select sal from emp where ename = 'MARTIN');

--37.列出薪金工资比‘SMITH’多的所有雇员信息:
select * from emp where sal > (select sal from emp where ename = 'SMITH');

--38.列出薪金高于在部门30工作的所有雇员的姓名和薪金:
select ename,sal from emp where sal > all (select sal from emp where deptno = 30);

--39.雇员中谁的工资最高:
select ename from emp where sal = (select max(sal) from emp);

--40.统计每个部门中各职位的人数与平均工资:
select deptno,job,count(*),avg(sal) from emp group by deptno,job;

--41.查询每个员工的员工编号,工资,奖金以及工资与奖金的和(先使用非空函数,再尝试不使用非空函数):
select empno,sal,comm,(sal+nvl(comm,0)) from emp ;

select empno,sal,comm,(sal+comm) from emp where comm is not null
union 
select empno,sal,comm,sal "sal+comm"  from emp where comm is null ;

--42.查询工资、奖金与10号部门某员工工资、奖金都相同的员工的信息:
select * from emp where (sal,nvl(comm,0)) in (select sal,nvl(comm,0) from emp where deptno = 10);

--1.取得每个部门最高薪水的人员姓名(薪资加奖金):
select ename from emp where (deptno,sal+nvl(comm,0))in (select deptno,max(sal+nvl(comm,0)) from emp group by deptno);

--2.查询上司是‘king’的员工姓名和工资:
select ename,sal from emp where mgr = (select empno from emp where ename = 'KING');

--3.查询工资相同的员工的工资和姓名(注:使用子查询,from后面也可使用子查询):
select ename,sal from emp where sal in (select sal from (select sal,count(*) from emp group by sal having count(*)>1));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值