oracle数据库作业

本文深入探讨了SQL语言的应用技巧,包括复杂条件筛选、日期处理、字符串操作、联表查询等多个方面,帮助读者掌握高效的数据检索方法。

1. 查询出工资大于1500的所有有雇员的信息

Select * from emp where sal>=1500;

2. 查询每月可以拿到奖金的雇员的信息(不为空 IS NOT NULL

Select * from emp where comm is not null;

3. 查询工资大于1500,并且可以拿到奖金的雇员的信息

Select * from emp where sal>=1500 and comm is not null;

4. 查询工资不大于1500,并且不能拿到奖金的雇员的信息(使用NOT 取反)

select * from emp where not(sal>=1500 or comm is not null);

1. 查询基本工资大于1500,小于3000的雇员信息(使用between and 包含了等于的内容)

select * from emp where sal >1500  and  sal<3000;

2. 查询出1981年出生的雇员的信息(BETWEEN 1-1月 -81’ AND 31-12月 -81’)

select * from emp where hiredate between '1-1月 -81' and '31-12月 -81';

3. 查询出雇员编号是736974497521的雇员的详细信息(IN表示在什么范围,相反为NOT IN

select * from emp where empno  in (7369 , 7449 , 7521);

9. 查询名字中第二个字母是M的雇员信息(LIKE _M%’)

select * from emp where ename like '_M%';

10. 查询出名字中包含字母M的雇员信息

select * from emp where ename like '%M%';

11. 查询81年出生的所有员工的信息(LIKE %81%’)

select * from emp where hiredate like '%81%';

12. 查询工资中带6的员工的信息(证明LIKE可以应用在数字上)

select * from emp where sal like '%6%';

13. 查询编号不是7369的员工信息(<> 和 !=

select * from emp where  empno <> 7369;

1. 工资有低到高进行排序(默认为ASC 升序排列)

select * from emp order by sal asc;

2. 要求查询出员工的信息,查询的信息按照工资又高到低进行排序,如果工资相等,则按照雇佣日期由早到晚进行排序

select * from emp order by sal desc,hiredate asc;

3. 显示10部门雇员进入公司的星期数

select empno,ename,round((sysdate-hiredate)/7) weeks from emp where deptno = 10 ;

1、 查出部门30中所有员工

select * from emp where deptno = 30;

2、 列出所有办事员的姓名,编号和部门编号

select ename,empno,deptno from emp where job ='CLERK';

3、 找出奖金高于工资的员工

Select * from emp where comm>sal;

4、 找出奖金高于工资60%的员工

Select * from emp where (comm-sal*1.6)>0;

1、 找出部门10中所有经理和部门20中所有办事员的详细资料

select * from emp where (job='CLERK' AND DEPTNO = 20) OR (JOB = 'MANAGER' AND DEPTNO=10);

2、 找出部门10中所有经理和部门20中所有办事员,即不是经理又不是办事员但工资大于或等于2000的员工的详细资料

 SELECT * FROM EMP WHERE (JOB='CLERK' AND DEPTNO=20) OR (JOB='MANAGER' AND DEPTNO = 10) OR (JOB NOT IN ('CLERK','MANAGER') AND SAL>=2000);

3、 找出所有拿奖金的员工的不同工作

select distinct( job) from emp where comm is not null;

4、 找出不拿奖金或者奖金低于100的员工的所有信息

select * from emp where (comm is null) or (comm<100);

5、 找出每个月倒数第3天受雇的所有员工

select * from emp where hiredate=last_day(hiredate)-2; 

6、 找出14年前受雇的员工

  select * from emp where hiredate<add_months(sysdate,-14*12);

1、 以首字母大写的方式显示员工姓名

select initcap(ename) from emp;

2、 显示正好为5个字符的员工姓名

select ename from emp where length(ename)=5;

3、 显示不姓名中带R字母的员工姓名

select ename from emp where ename notlike'%R%'; 

4、 显示所有员工姓名的前三个字符

select substr(ename,1,3) from emp ; 

5、 显示所有员工姓名,把A全部换成a

selectreplace(ename,'A','a') from emp ; 

6、 显示服务满10年的员工和受雇日期

Select ename,hiredate from emp where months_between(sysdate,hiredate)/12>=10; 

7、 显示员工的详细资料按,姓名排序

select * from emp orderby ename ; 

8、 显示员工的姓名和受雇日期,资格最老的排在前面

select ename ,hiredate from emp orderby hiredate asc; 

9、 显示所有工作的姓名,工作和薪金,按工作降序排序,若工作相同按薪金升序排序

select ename,job,sal from emp orderby job desc ,sal asc ; 

10、 显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,若月份相同,则最早的年份的员工排在前面

select ename,to_char(hiredate,'yyyy/mm') from emp order by to_char(hiredate,'mm'),to_char(hiredate,'yyyy') asc;

1、 显示在一个月为30天的情况所有员工的日薪金,忽略余数

select  round(sal/30) from emp; 

2、 找出每年2月份受雇的员工

select * from emp where to_char(hiredate ,'MM')=2 ; 

3、 显示每个员工加入公司的天数

select ename,round(sysdate-hiredate) emp_date from emp; 

4、 以年月日的形式显示所有员工的服务年限

Select ename , to_char(hiredate,’yyyy’) || ‘年’ || to_char(hiredate,’mm’)||’月’||to_char(hiredate,’dd’)||’日’ from emp;

2.要求查出员工的编号,员工的姓名,部门的编号,部门名称和部门位置

Select e.empno , e.ename , d.deptmo , d.dname , loc  from emp e , dept d where e.deptno = d.deptno;

3. 要求查出每个员工的姓名,工作,雇员的直接上级领导的姓名

Select e.ename, e.job , m.ename from emp e ,emp m where e.mgr = m.empno;

4. 要求查出每个员工的姓名,工作,雇员的直接上级领导的姓名及所在部门名称

Select e.ename , e.job , m.ename , d.dname from emp e , emp m , dept d where e.mgr = m.empno and m.deptno = d.deptno;

5. 要求查询出每个员工的姓名、工资、部门名称、工资在公司的等级和领导的姓名及领导的工资在公司的等级。

Select e.ename , e.sal , d.dname , es.grade , m.ename , m.sal , ms.grade from emp e , emp m , dept d , salgrade es , salgrade ms where e.mgr = m.empno and e.deptno = d.deptno and e.sal between es.losal and es.hisal and m.sal  between ms.losal and ms.hisal;

转载于:https://www.cnblogs.com/bod08lizuming/archive/2013/02/22/2921803.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值