码迷,mamicode.com
首页 > 数据库 > 详细

Oracle学习系列2

时间:2016-05-05 22:29:52      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

SQL语法练习:
	1,选择部门30中的所有员工
		select * from emp 
			where deptno=30;
			
	2,列出办事员的姓名,编号和部门编号
		select ename, empno, deptno 
			from emp
				where job=upper(‘clerk‘); 
				
	3,找出佣金高于薪金的员工
		select  * 
			from emp
				where comm>sal ;
	
	4,找出佣金高于薪金的60%的员工
		select * 
			from emp
				where comm > sal * 0.6;
	
	5,找出部门10中所有经理和部门20中所有办事员的详细资料
		select * 
			from emp
				where (deptno=10 and job=‘manager‘) or ( deptno=20 and job=‘clerk‘ );
	
	6,找出部门10中所有经理,部门20中所有办事员,既不是经理也不是办事员但其薪金大于或等于2000的所有员工 的详细资料
			select * 
				from emp 
					where (deptno=20 and job=‘manager‘)or(deptno=20 and job=‘clerk‘) 
							or (job NOT IN(‘manager‘, ‘clerk‘) and sal >=2000) ;
	
	7,找出收取佣金的员工的不同工作
		select distinct job 
			from emp
				where comm IS NOT NULL;
		
	8,找出不收取佣金或者收取的佣金低于100的员工
		select * 
			from emp
				where (comm is null ) or (comm<100);
	
	9,找出各月倒数第三天受雇的所有员工
		select * 
			from emp
				where last_day(hiredate)-2 =hiredate ;
	
	10,找出早于12年前受雇的员工
		select * 
			from emp
				where (months_between(sysdate, hiredate) /12 ) > 12 ;
	
	11,以首字母大学的方式显示所有员工的姓名
		select initcap(ename)
			from emp;
	
	12,显示正好为5个字符的员工的姓名
		select ename 
			from emp
				where length(ename)=5 ;
	
	13,显示不带’R‘的员工的姓名
		select ename
			from emp
				where ename not like ‘%R%‘ ;
	
	14,显示所有员工姓名的前三个字符
		select substr(ename,0,3)
			from emp ;
	
	15,显示所有员工姓名,用’a‘替换所有的’A‘
		select replace(ename, ‘A‘,‘a‘)
			from emp ;
	
	16,显示满10年服务年限的员工的姓名和受雇日期
		select ename ,hiredate
			from emp
				where (months_between(sysdate, hiredate) /12 ) > 10 ;
	
	17,显示员工的详细信息,按姓名排序
	select * 	
		from emp
			order by ename;
			
	18,显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面
		select ename, hiredate
			from emp
				order by hiredate;
	
	19,显示所有员工的姓名,工作和薪金,按工作的降序排序,若工作相同则按薪金排序
		select ename , job, sal 
			from emp
				where job desc, sal ;
	
	20,显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面
		select ename,to_char(hiredate,‘yyyy‘) year, to_char(hiredate,‘yy‘) months
			from emp
				order by months ,year ;
	
	21,显示在一个月为30天的情况的所有员工的日薪金,忽略余数
		select ename ,round(sal/30)
			from emp
			
	
	22,找出在任何年份的2月受聘的所有员工
		select * 
			from emp
				where  to_char(hiredate,‘mm‘) = 2 ;
	
	23,对于每个员工,显示其加入公司的天数
		select ename, round(sysdate-hiredate) days
			from emp ;
	
	24,显示姓名字段的任何位置包含’A‘的所有员工的姓名
		select * 
			from emp
				where ename like ‘%A%‘ ;
	
	25,以年月日的方式显示所有员工的服务年限。
		select ename ,trunc( months_between( sysdate , hiredate )/12 ) years,
					  trunc( mod( months_between( sysdate,hiredate ),12 ) ) months,
					  trunc( mod( (sysdate-hiredate),30 ) )days
			from emp ;

 

Oracle学习系列2

标签:

原文地址:http://www.cnblogs.com/mitnick/p/5463329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!