您的当前位置:首页正文

oracle课后习题

来源:好兔宠物网


-----------------------day1-----------------------------------

1. 查询职员表中工资大于1600的员工姓名和工资。 2. 查询职员表中员工号为7369的员工的姓名和部门号码 3. 选择职员表中工资不在4000到5000的员工的姓名和工资 4. 选择职员表中在20和30号部门工作的员工姓名和部门号 5. 选择职员表中没有管理者的员工姓名及职位, 按职位排序 6. 选择职员表中有奖金的员工姓名,工资和奖金,按工资倒序排列 7. 选择职员表中员工姓名的第三个字母是A的员工姓名 8. 列出部门表中的部门名字和所在城市; 9. 显示出职员表中的不重复的岗位job

10. 连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成

OUT_PUT(提示:使用连接符||、别名)

11. 查询职员表emp中员工号、姓名、工资,以及工资提高百分之20%后的结

12. 查询员工的姓名和工资数,条件限定为工资数必须大于1200,并对查询结果

按入职时间进行排列,早入职排在前面,晚入职排在后面。 13. 列出除了ACCOUNT部门还有哪些部门。

-----------------------day2-----------------------------------

1. 将员工的姓名按首字母排序,并列出姓名的长度(length) 2. 做查询显示下面形式的结果 (如果工作出现#表示超过了范围)

earns monthly but wants 例如: Dream Salary

King earns $5000 monthly but wants $15000 3. 使用decode函数,按照下面的条件: JOB GRADE PRESIDENT A MANAGER B ANALYST C SALESMAN D CLERK E 产生类似下面形式的结果 ENAME JOB GRADE SMITH CLERK E

4. 查询各员工的姓名ename,并显示出各员工在公司工作的月份数(即:与当前

日期比较,该员工已经工作了几个月, 用整数表示)。 5. 现有数据表Customer,其结构如下所示:

cust_id NUMBER(4) Primary Key, --客户编码 cname VARCHAR2(25) Not Null, --客户姓名 birthday DATE, --客户生日

account NUMBER. --客户账户余额

(1).构造SQL语句,列出Customer数据表中每个客户的信息。如果客户生日未提供,则该列值显示“not available” 。如果没有余额信息,则显示“no account”。(使用to_char,nvl)

(2).构造SQL语句,列出生日在1987年的客户的全部信息。 Select * from Customer where extract(year from birthday)=’1987’;

(3).构造SQL语句,列出客户帐户的余额总数。 6. 按照”2009-4-11 20:35:10 ”格式显示系统时间。

7. 构造SQL语句查询员工表emp中员工编码empno,姓名ename,以及月收入

(薪水 + 奖金),注意有的员工暂时没有奖金。 8. 查找员工姓名的长度是5个字符的员工信息。

9. 查询员工的姓名和工资,按下面的形式显示:(提示:使用lpad函数)

NAME SALARY

----------------------------------------------------- SMITH $$$$$$$$$$24000

10. 查询薪水大于2000元的员工的姓名和薪水,薪水值显示为’RMB5000.00’这

种形式,并对查询结果按薪水的降序方式进行排列; Select ename,to_char(sal,’L9999.00) salary from emp Where sal>2000;

11. 构造查询语句,产生类似于下面形式的结果:(to_char() 在格式字符中出

现了非有效的格式字符要用双引号引起来“年”)

NAME HIREDATE REVIEW

----------------------------------------------------------------------------------------- SMITH 1980-12-17 1980年12月17日 12. 显示所有员工的姓名ename,部门号deptno和部门名称dname。 13. 选择在DALLAS工作的员工的员工姓名、职位、部门编码、部门名字 14. 选择所有员工的姓名ename,员工号deptno,以及他的管理者mgr的姓名

ename和员工号deptno,结果类似于下面的格式 employees SMITH

15. 查询各部门员工姓名和他们所在位置,结果类似于下面的格式 Deptno Ename Loc Emp# 7369 manager FORD Mgr# 7902

20 SMITH DALLAS 16. 查询公司员工工资的最大值,最小值,平均值,总和

17. 列出每个员工的名字,工资、涨薪后工资(涨幅为8%),元为单位进行四

舍五入

18. 查询出JONES的领导是谁(JONES向谁报告)。 19. JONES领导谁。(谁向JONES报告)。

-----------------------day3----------------------------------- 1. 查询各job的员工工资的最大值,最小值,平均值,总和 2. 选择具有各个job的员工人数(提示:对job进行分组) 3. 查询员工最高工资和最低工资的差距,列名为DIFFERENCE;

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

理者的员工不计算在内

5. 查询所有部门的部门名字dname,所在位置loc,员工数量和工资平均值; 6. 查询和scott相同部门的员工姓名ename和雇用日期hiredate

7. 查询工资比公司平均工资高的所有员工的员工号empno,姓名ename和工

资sal。

8. 查询和姓名中包含字母u的员工在相同部门的员工的员工号empno和姓名

ename

9. 查询在部门的loc为newYork的部门工作的员工的员工姓名ename,部门名

称dname和岗位名称job

10. 查询管理者是king的员工姓名ename和工资sal 11. 显示Operations部门有哪些职位 12. 各个部门中工资大于1500的员工人数

13. 哪些员工的工资,高于整个公司的平均工资,列出员工的名字和工资(降序) 14. 所在部门平均工资高于1500的员工名字

15. 列出各个部门中工资最高的员工的信息:名字、部门号、工资

16. 哪个部门的平均工资是最高的,列出部门号、平均工资

-----------------------day4-----------------------------------

1.创建表employee,字段见第三题表头显示,字段统一定义为Varchar2(20);

2.显示表employee的结构;

3.向表中插入下列数据,并提交,查询数据; ID 1 2 3 4 5 FIRST_NAME Rose Matha Donna Doctor Jack LAST_NAME Tyler Jones Noble Who Harkness MGRID 4 4 4 1 SALARY 1500 2200 1300 3500 3000 4.将3号员工的last_name修改为“Tate”,并提交,查询数据; 5.将所有工资少于2000的员工的工资修改为2000 (不提交),并设置保存点,查询数据;

6.删除employee表中所有数据(不提交),查询数据; 7.回滚到第五题中的设置的保存点,查询数据; 8.删除表employee中所有数据,并提交,查询数据; 9.现有数据表Customer,其结构如下所示:

cust_id NUMBER(4) Primary Key, --客户编码 cname VARCHAR2(25) Not Null, --客户姓名 csex CHAR(6) --客户性别 birthday DATE, --客户生日

account NUMBER. --客户账户余额

1) 创建表,客户编码为主键,姓名不能为空,性别只能选择”男”或”女”;

2) 构造SQL语句,向Customer数据表中插入一条记录,其信息如下:客户编码为1001,客户姓名为sean,性别为”男”,生日为1987-11-17,帐户余额为12345元。

-----------------------day5-----------------------------------

1. 创建一个序列,初始值是1000,步进是10;

2. 创建一个视图v_emp,内容是按部门分组,各个部门的薪水总和和员工人数;

视图字段定义为deptno, total_sal, total_count; 3. 查询视图,列出全部记录; 4. 删除视图;

5. 列出薪水最低的三名员工的名字;

6. 列出按员工编码排序,第6到第10条员工记录。

因篇幅问题不能全部显示,请点此查看更多更全内容