oracle 数据库 练习题2

来源:互联网 发布:kettle java代码 编辑:程序博客网 时间:2024/06/05 06:45

一.使用scott/tiger用户下的emp表完成下列练习,表的结构说明如下

emp员工表 字段内容如下:

empno 员工号

ename 员工姓名

job 工作

mgr 上级编号

hiredate 受雇日期

sal 薪金

comm 佣金

deptno 部门编号

-- 选择部门30中的所有员工.SELECT *FROM EMPWHERE DEPTNO=30;-- 列出所有办事员(CLERK)的姓名,编号和部门编号.SELECT ENAME,MGR,DEPTNOFROM EMPWHERE "JOB" LIKE 'CLERK';-- 找出佣金高于薪金的员工.SELECT EMPNO,ENAMEFROM EMPWHERE COMM>SAL;-- 找出佣金高于薪金的60%的员工.SELECT EMPNO,ENAMEFROM EMPWHERE COMM>SAL*0.6;-- 找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.SELECT *FROM EMPWHERE (DEPTNO=10 AND "JOB"='MANAGER') OR (DEPTNO=20 AND "JOB"='CLERK');-- 找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.SELECT *FROM EMPWHERE (DEPTNO=10 AND "JOB"='MANAGER') OR (DEPTNO=20 AND "JOB"='CLERK') OR ("JOB"<>'MANAGER' AND "JOB"<>'CLERK' AND SAL>=2000);-- 找出收取佣金的员工的不同工作.SELECT DISTINCT JOBFROM EMPWHERE COMM IS NOT NULL-- 找出不收取佣金或收取的佣金低于100的员工.SELECT EMPNO,ENAME,"JOB"FROM EMPWHERE COMM IS NOT NULL AND COMM<100;-- 找出各月倒数第3天受雇的所有员工.SELECT EMPNO,ENAMEFROM EMPWHERE HIREDATE=(LAST_DAY(HIREDATE)+(INTERVAL '-2' DAY));-- 找出早于12年前受雇的员工.SELECT EMPNO,ENAMEFROM EMPWHERE HIREDATE<(trunc(sysdate)+(INTERVAL '-12' YEAR));-- 以首字母大写的方式显示所有员工的姓名.SELECT "INITCAP"(ENAME)FROM EMP-- 显示正好为5个字符的员工的姓名.SELECT ENAMEFROM EMPWHERE "LENGTH"(ENAME)=5;-- 显示不带有"R"的员工的姓名.SELECT ENAMEFROM EMPWHERE ENAME NOT LIKE '%R%';-- 显示所有员工姓名的前三个字符.SELECT substr(ENAME,1,3)FROM EMP;-- 显示所有员工的姓名,用a替换所有"A"SELECT TRANSLATE(ENAME,'A','a')FROM EMP;-- 显示满10年服务年限的员工的姓名和受雇日期.SELECT HIREDATE,ENAMEFROM EMPWHERE HIREDATE<=(trunc(sysdate)+(INTERVAL '-10' YEAR));-- 显示员工的详细资料,按姓名排序.SELECT *FROM EMPORDER BY ENAME ASC;-- 显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.SELECT ENAME,HIREDATEFROM EMPORDER BY HIREDATE ASC;-- 显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.SELECT ENAME,"JOB",SALFROM EMPORDER BY JOB DESC ,SAL;-- 显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.SELECT ENAME,extract(YEAR from HIREDATE) YEAR,extract(MONTH from HIREDATE) MONTHFROM EMPORDER BY MONTH ASC,YEAR;-- 显示在一个月为30天的情况所有员工的日薪金,忽略余数.SELECT TRUNC(SAL/30)FROM EMP;-- 找出在(任何年份的)2月受聘的所有员工。SELECT ENAME,EMPNOFROM EMPWHERE extract(MONTH from HIREDATE)=2;-- 对于每个员工,显示其加入公司的天数.SELECT ROUND(sysdate-HIREDATE)FROM EMP;--显示姓名字段的任何位置包含"A"的所有员工的姓名. SELECT ENAMEFROM EMPWHERE ENAME LIKE '%A%';


总结:因为是很久之前学过的是SQL数据库,到现在还是有点生疏了,很多的函数和知识有点遗忘了,还是要查看的。

原创粉丝点击