1、empno 员工号 ename 员工姓名 job 工作 mgr 上级编号 hiredate 受雇日期 sal 薪金 comm 佣金 deptno 部门编号 --1.选择部门30中的所有员工. select * from emp where deptno = 30 --2.列出所有办事员(CLERK)的姓名,编号和部门编号. select ena
2、me,empno,deptno from emp where job='CLERK' --3.找出佣金高于薪金的员工. select * from emp where comm>sal --4.找出佣金高于薪金的60%的员工. select * from emp where comm>(sal*0.6) --5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料. select * from emp where (job='MANAGER' and deptno=10) or (job='CLERK' and deptno=20)
3、 --6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料. select * from emp where (job='MANAGER' and deptno=10) or (job='CLERK' and deptno=20) or (job!='MANAGER' and job!='CLERK' and sal>=2000) --7.找出收取佣金的员工的不同工作. select distinct job from emp where comm>0 --8.找出不收取佣金或收
4、取的佣金低于100的员工. select * from emp where comm is null or comm<100 --9.找出各月倒数第3天受雇的所有员工. select * from emp where hiredate=last_day(hiredate)-2 --last_day(date类型参数),返回一个月的最后一天 --10.找出早于12年前受雇的员工. select * from emp where months_between(sysdate,hiredate)>=144 --months_between(date1,date2),返回两个日期
5、之间的月份个数 --11.以首字母大写的方式显示所有员工的姓名 select initcap(ename) from emp --initcap(string),返回首字母大写的字符串 --12.显示正好为5个字符的员工的姓名. select ename from emp where length(ename)=5 --length(string),返回字符串的长度 --13.显示不带有"R"的员工的姓名. select ename from emp where ename not like '%R%' --14.显示所有员工姓名的前三个字符. select
6、 substr(ename,1,3) from emp /**//*substr(string,start,count),截取字符串长度, start起始位数,count截取的位数, 如果不写count就是从start开始截取到最后*/ --15.显示所有员工的姓名,用a替换所有"A" select replace(ename,'A','a') from emp /**//*replace(string,if,then),字符串替换,用then替换if*/ --16.显示满10年服务年限的员工的姓名和受雇日期. select ename,hiredate from em
7、p where months_between(sysdate,hiredate)>=120 --17.显示员工的详细资料,按姓名排序. select * from emp order by ename --18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面. select ename,hiredate from emp order by hiredate --19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序. select ename,job,sal from emp order by job desc,sal -
8、20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面. select ename, to_char(hiredate,'yyyy-mm') from emp order by to_char(hiredate,'mm'),to_char(hiredate,'yy') --to_char(非string,'格式'),按格式把数据转换成字符类型,格式可以省略 --21.显示在一个月为30天的情况所有员工的日薪金,忽略余数. select trunc(sal/30,0) from emp --no四舍五入 --22.找出在
9、任何年份的)2月受聘的所有员工。 select * from emp where to_char(hiredate,'mm')=02 --23.对于每个员工,显示其加入公司的天数. select trunc(sysdate-hiredate,0) from emp --24.显示姓名字段的任何位置包含"A"的所有员工的姓名. select ename from emp where ename like '%A%' --25.以年月日的方式显示所有员工的服务年限. (大概) select to_char(to_date('0001-01-01','yyyy-mm-dd') + (sysdate-hiredate) - 365 - 31 - 1,'yyyy-mm-dd') from emp






