测试一
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. 做一个查询,产生类似下面的结果
测试四
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年之间,每年雇用的人数,结果类似下