Oracle相关习题(无答案)

1. 过滤和排序数据

  1. 查询工资大于1200的员工姓名和工资
  1. 查询员工号为7788的员工的姓名和部门号
  1. 选择工资不在500到1200的员工的姓名和工资(两种解法)
  1. 选择雇用时间在1981-02-01到1981-05-01之间的员工姓名,工作和雇用时间(两种解法)
  1. 选择在20或50号部门工作的员工姓名和部门号(两种解法)
  1. 选择在1981年雇用的员工的姓名和雇用时间
  1. 选择公司中没有管理者的员工姓名及job
  1. 选择公司中有奖金的员工姓名,工资和奖金级别
  1. 选择员工姓名的第三个字母是R的员工姓名
  1. 选择姓名中有字母L和E的员工姓名

或者

2. 单行函数

  1. 显示系统时间(注:日期+时间)
  1. 查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)
  1. 将员工的姓名按首字母排序,并写出姓名的长度(length)
  1. 查询各员工的姓名,并显示出各员工在公司工作的月份数(worked_month),不足一个月算一个月。
  1. 查询员工的姓名,以及在公司工作的月份数(worked_month),不足一个月算一个月,并按月份数降序排列
  1. 做一个查询,产生下面的结果

    (某人)每月想要赚取(三倍月工资),但是仅仅赚了(月工资)

    例如:

    Dream Salary

    SMITH每月想要赚取 800

  1. 使用decode函数,按照下面的条件分类:

    job grade
    CLERK A
    SALESMAN B
    MANAGER C
    ANALYST D
    PRESIDENT E

    SQL :

  1. 将第7题的查询用case函数再写一遍。

3. 多表查询

  1. 显示所有员工的姓名,部门号和部门名称(两种方法)

或者:

  1. 查询30号部门员工的job和30号部门的loc
  1. 选择所有有奖金的员工的ename , dname , loc
  1. 选择city在NEW YORK工作的员工的ename , job , deptno , dname
  1. 选择指定员工的姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式
姓名 员工号 领导
SCOTT 7788 JONES

4. 分组函数

  1. 组函数处理多行返回一行吗?

  2. 组函数不计算空值吗?

  1. where子句可否使用组函数进行过滤?
  1. 查询公司员工工资的最大值,最小值,平均值,总和
  1. 查询各工作的员工工资的最大值,最小值,平均值,总和
  1. 选择具有各个工作的员工人数
  1. 查询员工最高工资和最低工资的差距(DIFFERENCE)
  1. 查询各个管理者手下员工的最低工资,其中最低工资不能低于2000,没有管理者的员工不计算在内
  1. 查询所有部门的名字,部门地址,员工数量和工资平均值
  1. 查询公司在1980-1982年之间,每年雇用的人数,结果类似下面的格式
total 1980 1981 1982
12 1 10 1

5. 子查询

  1. 查询和SCOTT相同部门的员工姓名和雇用日期
  1. 查询工资比公司平均工资高的员工的员工号,姓名和工资。
  1. 查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资(难)
  1. 查询在部门的loc为NEW YORK的部门工作的员工的员工号
  1. 查询管理者是King的员工姓名和工资

6. 创建和管理表

  1. 创建表dept1
name Null type
id number(7)
name varchar2(25)

SQL:

  1. 快速新建dept2表,要求个dept表结构一样,并且数据一样。
  1. 创建表emp5
name Null type
id Number(7)
First_name Varchar2(25)
Last_name Varchar2(25)
Dept_id Number(7)

SQL:

  1. 将列Last_name的长度增加到50
  1. 根据表emp5创建employees2
  1. 删除表emp5
  1. 将表employees2重命名为emp5
  1. 在表dept和emp5中添加新列test_column,并查看表结构
  1. 在表dept和emp5中将列test_column设置成不可用,之后删除
  1. 直接删除表emp5中的列 dept_id

7. 数据处理

  1. 运行以下脚本创建表my_employees
  1. 显示表my_employees的结构
  1. 向表中插入下列数据
ID FIRST_NAME LAST_NAME USERID SALARY
1 patel Ralph Rpatel 895
2 Dancs Betty Bdancs 860
3 Biri Ben Bbiri 1100
4 Newman Chad Cnewman 750
5 Ropeburn Audrey Aropebur 1550
  1. 提交
  1. 将3号员工的last_name修改为“drelxer”
  1. 将所有工资少于900的员工的工资修改为1000
  1. 检查所作的修正
  1. 提交
  1. 删除所有数据
  1. 查看表中数据
  1. 回滚
  1. 清空表my_employees

8. 约束处理

准备工作:

create table emp2 as select empno id, ename name, sal salary from emp;

create table dept2 as select deptno id, dname dept_name from dept;
  1. 向表emp2的id列中添加PRIMARY KEY约束(my_emp_id_pk)
  1. 向表dept2的id列中添加PRIMARY KEY约束(my_dept_id_pk)
  1. 向表emp2中添加列dept_id,并在其中定义FOREIGN KEY约束,与之相关联的列是dept2表中的id列。

9. 视图

  1. 使用表emp创建视图employee_vu,其中包括姓名,员工号,部门号
  1. 显示视图的结构
  1. 查询视图中的全部内容
  1. 将视图中的数据限定在部门号是30的范围内
  1. 将视图改变成只读视图

10. select练习

  1. 列出emp表中各部门的部门号,最高工资,最低工资
  1. 列出emp表中各部门job为'CLERK'的员工的最低工资,最高工资
  1. 对于emp中最低工资小于1000的部门,列出job为'CLERK'的员工的部门号,最低工资,最高工资
  1. 根据部门号由高而低,工资由低而高列出每个员工的姓名,部门号,工资
  1. 列出'SCOTT'所在部门中每个员工的姓名与部门号
  1. 列出每个员工的姓名,工作,部门号,部门名
  1. 列出emp中工作为'CLERK'的员工的姓名,工作,部门号,部门名
  1. 对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外键为mgr)
  1. 对于dept表中,列出所有部门名,部门号,同时列出各部门工作为'CLERK'的员工名与工作
  1. 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序
部门编号 平均工资
10 2916.66667
20 2175
30 1566.66667
  1. 对于emp,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序
  1. 对于emp中工资高于本部门平均水平,人数多于1人的,列出部门号,人数,按部门号排序(难)
  1. 对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数(难)

你可能感兴趣的:(Oracle相关习题(无答案))