数据库基本练习

一、查询部门30中的全部员工的所有信息。 html

select * from emp where deptno=30;htm

二、查询全部办事员(CLERK)的姓名,编号和部门编号。 blog

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

三、查询补助高于薪金的员工的所有信息。 get

select * from emp where nvl(comm,0) > sal;博客

四、查询补助高于薪金的60%的员工的所有信息。 it

select * from emp where nvl(comm,0) > (sal*0.6);io

五、查询部门10中全部经理(MANAGER)和部门20中全部办事员(CLERK)的详细资料。 ast

select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 And job='CLERK');class


 

六、查询部门10中全部经理(MANAGER),部门20中全部办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的全部员工的详细资料。 

理解1:查询部门10中全部经理(MANAGER),部门20中全部办事员(CLERK),以及公司内哪些既不是经理又不是办事员但其薪金大于或等于2000的全部员工的详细资料。

Select * From emp Where (deptno=10 And job='MANAGER') Or (deptno=20 And job='CLERK') Or (job Not In ('MANAGER','CLERK') And sal>=2000);


 

理解2:查询部门10中全部经理(MANAGER),部门20中全部办事员(CLERK),以及十、20号部门内 既不是经理又不是办事员但其薪金大于或等于2000的全部员工的详细资料。

Select * From emp Where (deptno=10 And job='MANAGER') Or (deptno=20 And job='CLERK') Or (job Not In ('MANAGER','CLERK') And sal>=2000 And deptno In (10,20));


 

七、查询收取补助的员工的不一样工做。 

select ename,job,comm from emp where nvl(comm,0) > 0;


 

八、查询不收取佣金或收取的补助小于100的员工。 

select * from emp where nvl(comm,0) <100;


 

九、查询各月倒数第3天受雇的全部员工。 

Select * From emp Where (last_day(hiredate) - hiredate) = 2;


 

十、查询早于12年前受雇的员工。 

Select * From emp Where to_char(Sysdate,'yyyy') - to_char(hiredate,'yyyy') >= 12;


 

十一、查询首字母大写的方式显示全部员工的姓名。 

Select ename,Initcap(ename) From emp;


 

十二、查询正好为5个字符的员工的姓名。 

Select ename From emp Where Length(ename)=5;


 

1三、查询不带有“R”的员工的姓名。 

作法1:Select ename From emp Where ename Not Like '%R%';

作法2:Select ename From emp Where Instr(ename,'R')=0; 


 

1四、查询全部员工姓名的前三个字符。

Select ename, Substr(ename,1,3) From emp; 


 

1五、查询全部员工的姓名,用“a”替换全部“A” 

Select ename,Replace(ename,'A','a') From emp;


 

1六、查询满10年服务年限的员工的姓名和受雇日期。 

方法1:若是不考虑到闰年平年的话,10*365能够表明10年。

Select ename, hiredate From emp Where (Sysdate-hiredate)>=10*365;

方法2:若是考虑到闰年平年,10*365是不知足10年的要求。

若是服务年限满10年,那排除月日,sysdate和hiredate在年份上确定也是>=10

Select ename, hiredate From emp Where (to_char(Sysdate,'yyyy') - to_char(hiredate,'yyyy')) >= 10;


 

1七、查询员工的详细资料,按姓名排序。 

Select * From emp Order By ename;


 

1八、查询员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面。

Select ename, hiredate From emp Order By hiredate Desc; 


 

1九、查询全部员工的姓名、工做和薪金,按工做的降序排序,若工做相同则按薪金排序。 

Select ename,job,sal From emp Order By job Desc,sal Desc; 


 

20、查询全部员工的姓名,加入公司的年份和月份,按受雇日期所在月份排序,若月份相同则将最先年份的员工排在最前面。 

Select ename,to_char(hiredate,'yyyy'),to_char(hiredate,'mm') From emp Order By to_char(hiredate,'mm'),to_char(hiredate,'yyyy');


 

2一、查询在一个月尾30天的状况全部员工的日薪金,忽略余数。 

Select ename,Trunc(sal/30) From emp;


 

2二、查询在(任何年份的)2月受聘的全部员工。 

Select * From emp Where to_char(hiredate,'mm')=2;


 

2三、查询每一个员工加入公司的天数。 

Select ename,(Sysdate-hiredate) From emp;


 

2四、查询姓名字段的任何位置包含“A”的全部员工的姓名。 

Select ename From emp Where ename Like '%A%';


 

2五、查询以年月日的方式显示全部员工的服务年限。(大概)

Select ename,sysdate,hiredate,Round(sysdate-hiredate) 天数,

Nvl(Trunc((sysdate-hiredate)/365),0)||'年'||

Nvl(Trunc((Mod((sysdate-hiredate),365))/30),0)||'月'||

Nvl(Round(Mod((Mod((sysdate-hiredate),365)),30)),0)||'日' 年月日 From emp;


 

做者:kerwin-chyl

文章连接:https:////www.cnblogs.com/kerwin-chyl

本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。

相关文章
相关标签/搜索