oracle练习及答案

2019-01-19 10:28

测试一

1. SQL*PLUS命令可以控制数据库 (no) 2. 下面的语句是否可以执行成功 (yes)

select last_name , job_id , salary as sal from employees;

3. 下面的语句是否可以执行成功 (yes)

select * from employees; 4. 找出下面语句中的错误

select employee_id , last_name sal * 12 ANNUAL SALARY from employees;

列于列之间未用逗号分隔 别名应用引号括起来

5. 显示表departments的结构,并查询其中的全部数据

desc departments select * from departments;

6. 显示出表employees中的全部job_id(不能重复)

select distinct job_id from employees;

7. 显示出表employees的全部列,各个列之间用逗号连接,列头显示成

OUT_PUT select

EMPLOYEE_ID||','||

FIRST_NAME||','||LAST_NAME||','||EMAIL||','||PHONE_NUMBER||','||HIRE_DATE||','||JOB_ID||','||SALARY||','||COMMISSION_PCT||','||MANAGER_ID||','|| DEPARTMENT_ID as \from employees;

测试二

1. 查询工资大于12000的员工姓名和工资 SELECT FIRST_NAME, salary FROM employees WHERE salary > 12000;

2. 查询员工号为176的员工的姓名和部门号 SELECT FIRST_NAME, department_id FROM employees

WHERE employee_id = 176;

3. 选择工资不在5000到12000的员工的姓名和工资 SELECT FIRST_NAME, salary FROM employees

WHERE salary NOT BETWEEN 5000 AND 12000;

4. 选择雇用时间在1998-02-01到1998-05-01之间的员工姓名,job_id和雇用时

SELECT FIRST_NAME, job_id, hire_date FROM employees

WHERE hire_date BETWEEN '01-2月-98' AND '01-5月-98'; 5. 选择在20和50号部门工作的员工姓名和部门号 SELECT FIRST_NAME, department_id FROM employees

WHERE department_id IN (20, 50);

6. 选择在1994年雇用的员工的姓名和雇用时间 SELECT FIRST_NAME, hire_date FROM employees

WHERE hire_date LIKE '?';

7. 选择公司中没有管理者的员工姓名及job_id SELECT FIRST_NAME, job_id FROM employees

WHERE manager_id IS NULL;

8. 选择公司中有奖金的员工姓名,工资和奖金 SELECT FIRST_NAME, salary, commission_pct FROM employees

WHERE commission_pct IS NOT NULL; 9. 选择员工姓名的第三个字母是a的员工姓名 SELECT FIRST_NAME FROM employees

WHERE FIRST_NAME LIKE '__a%'; 10. 选择姓名中有字母a和e的员工姓名 SELECT FIRST_NAME FROM employees

WHERE (FIRST_NAME LIKE '%e%a%' OR FIRST_NAME LIKE '%a%e%')

测试三

1. 显示系统时间

Select sysdate \

2. 查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary) select empno,ename,sal, round(sal*1.20,0) as “new salary” from emp;

3. 将员工的姓名按首字母排序,并写出姓名的长度(length)

select ename \from emp order by substr(ename,1,1);

4. 查询各员工的姓名,并显示出各员工在公司工作的月份数(worked_month)。 select ename,

round(months_between(sysdate,hiredate)) as worked_month from emp;

5. 查询员工的姓名和工资,按下面的形式显示 ename king

select lower(ename)ename,lpad(sal,15,'$') sal from emp; 6. 查询员工的姓名,以及在公司工作的月份数(worked_month),并按月份数

降序排列

select ename,round(months_between(sysdate,hiredate)) as worked_month from emp order by worked_month desc; 7. 做一个查询,产生类似下面的结果 earns monthly but wants Dream Salary King earns $24000 monthly but wants $72000 1.select ename||'earns'||lpad(sal,length(sal)+1,'$')|| ' monthly but wants '||lpad(sal*3,length(sal*3)+1,'$') \Salary\from emp; 2.select ename || 'earns'||to_char(sal,'fm$999,999')||'monthly but wants' || to_char(sal*3,'fm$9,999,999')as \Salary\from emp; SAL $$$$$$$$$$24000 8. 做一个查询,产生类似下面的结果 ename king select ename,hiredate,to_char(hiredate,'dd-mon-yy','nls_date_language=''American''')from emp; 9. 做一个查询,产生类似下面的结果 Employees_and_their_salarys King***** 其中每一个*代表一千元。 SELECT rpad(ename, length(ename) + sal/1000 , '*') “Employees_and_their_salarys” FROM emp 10. 使用decode函数,按照下面的条件: job grade PRESIDENT A MANAGER B ANALYST C SALESMAN D CLERK E 产生类似下面的结果 ename king 'CLERK', 'E', ' SALESMAN ', 'D', ' ANALYST ', 'C', ' MANAGER ', 'B', ' PRESIDENT ', 'A', '0') as GRADE FROM emp; 11. 将第10题的查询用case函数再写一遍。 SELECT ename , job, CASE job WHEN ‘CLERK' THEN 'E' WHEN 'SALESMAN' THEN 'D' Job PRESIDENT Grade A Hiredate 17-jun-87 SELECT ename , job, decode (job, WHEN 'ANALYST' THEN 'C' WHEN 'MANAGER' THEN 'B' WHEN 'PRESIDENT' THEN 'A' ELSE '0' END GRADE FROM emp;

测试四

1. 组函数处理多行返回一行(yes) 2. 组函数不计算空值(no)

3. where子句在分组之前对检索进行过滤 ( yes ) 4. 查询公司员工工资的最大值,最小值,平均值,总和

select max(sal) , min(sal) , avg(sal) , sum(sal) from emp;

5. 查询各job_id的员工工资的最大值,最小值,平均值,总和

select max(sal) , min(sal) , avg(sal) , sum(sal) from emp group by job; 6. 选择具有各个job的员工人数

select job , count(*) from emp group by job;

7. 查询员工最高工资和最低工资的差距(DIFFERENCE)

select max(sal) – min(sal) DIFFERENCE from emp

8. 查询各个管理者手下员工的最低工资,其中最低工资不能低于800,没有管

理者的员工不计算在内 select mgr , min(sal) from emp

where mgr is not null group by mgr having min(sal) >= 800;

9. 查询所有部门的名字,loc,员工数量和工资平均值 select d.dname,d.loc ,count(e.empno),avg(sal) from emp e,dept d

where e.deptno = d.deptno group by d.dname,d.loc

10. 查询公司的人数,以及在1995-1998年之间,每年雇用的人数,结果类似下


oracle练习及答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于中国能否走美国式、西欧式资本主义道路的思考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: