Oracle大型数据库系统基础实验指导书(5)

2018-11-29 16:51

巢湖学院

11)查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工信息。 12)如何按照部门升序、雇员的年薪降序显示信息

13)查询每个部分员工平均工资超过1500的记录信息,并按降序排列。 14)显示每个部门的员工工资总和(使用ROLLUP关键字)。

15)显示每个部门的员工工资总和及每一个岗位工资总和(使用CUBE关键字)。 3、连接查询 1)内连接

查询所以员工的编号、员工姓名和员工所在的部门名称。 2)等值连接

查询职位为MANAGER每个员工的编号、员工姓名和员工所在的部门名称。 3)自然连接

在emp表中检索工资(sal字段)大于2000的记录,并实现emp和dept的自然连接 4)自连接

a、查询不低于CLARK工资的员工号、员工姓名和员工工资,查询后的结果要求按员工工资升序排列。

b、查询所有管理者的下属员工信息。 5)外连接

首先使用INSERT语句在emp表中插入新纪录,但并没有为deptno,dname列插入值,即他们的值为null

INSERT INTO emp(empno,ename,job) VALUES(9527,'EAST','SALESMAN'); 然后在dept表中插入如下记录

INSERT INTO dept(deptno,dname) VALUES(50,'HR',?Shanghai?) 完成下面的外连接:

a、将emp表和dept表进行左外连接,emp为左表,dept表为右表 b、将emp表和dept表进行右外连接,emp为左表,dept表为右表 c、需要了解所有员工和部门信息(完整外连接)。 4、子查询

1)单行单列子查询(使用比较运算符)

查询出既不是最高工资也不是最低工资的员工信息 2)单列多行子查询(IN子查询)

a、查询与SMITH员工从事相同工作的其他员工信息。 b、查询部门人数大于5的部门的员工的信息。 3)ANY或ALL子查询

a、查询工资大于部门编号为10的任意一个员工工资即可的其他部门的员工信息。 b、查询工资大于部门编号为30的所有员工工资的员工信息。 4)多列子查询

查询与‘SMITH’的部门和岗位完全相同的其他员工信息。 5)from子句中使用子查询

a、查询高于自己部门平均工资的员工信息。 b、查询最低工资大于2500的各种工作。 6)关联子查询

检索工资大于同职位的平均工资的员工信息 6、Oracle常用系统函数 1)字符函数的应用

21

巢湖学院

a、查询emp表中员工的姓名、工作和所在的部门,姓名的首字符大写,其他字符小写,工作以小写字符输出。

b、查询工名正好为6个字符的员工信息。 c、查询所有员工姓名的前三个字符。 2)日期和时间类函数

a、查询各月倒数第二天入职的员工信息。 3)转换类函数

a、显示所有员工的姓名、雇佣日期及工龄,日期以“YYYY-MM-DD”格式显示 b、显示1982-1-1后入职的员工信息。

(二)oracle常用的更新语句

1、插入语句

1)分别在emp和dept插入一条记录。

Emp: a、向emp表中插入一条记录,员工号为9357,员工名字为oracle,工资为2050元,部门号为20,入职日期为2002年5月10日

b、在emp表中,插入一条记录 (9527,'EAST','SALESMAN')

Dept: 在dept插入一条记录(40,?DESIGN?,?Beijing?) (能否成功插入?并分析结果) 2)求每个部门的平均工资,并将结果保存到数据库中。

第一步: 在数据库中建立一个有两个属性列的新表,其中一列存放部门号别名,另一列存放相应部门的员工的平均工资。

CREATE TABLE AvgSal(Dept_ID number(2),Sal_Avg number(7,2)) ; 其中Dept_ID代表部门类编号, Sal_Avg代表平均工资。 第二步:插入(如何实现?) 2、更新语句

1)把emp表中员工名称以J开头的所有员工的工资上调20%。 2)将和SCOTT一个部门的所有员工工资上调20%。 3)将oracle员工(刚插入的)调任到ALLEN 所在的部门,其工作和工资、奖金和都和ALLEN一样 。 3、删除语句

1)把emp表中empno=9357的员工信息删除。 2)删除和SCOTT一个部门的所有员工信息。

3) 用turncate删除AvgSal表(刚创建的平均工资表)

(三)oracle常用的事务语句

完成下面操作:

1、向emp表中插入一条记录,员工号为9357,员工名字为oracle,工资为2050元,部门号为20,入职日期为2002年5月10日 2、设置保存点

3、在emp表中,插入一条记录 (9527,'EAST','SALESMAN') 4、回滚事务到检查点,并查询emp,查看事务操作情况 5、回滚整个事务,并查询emp,查看事务操作情况。 5、提交事务

6、查询emp,查看事务操作情况

22

巢湖学院

五、思考题及其它

1、可以用列别名作为order by子句的一部分,但能否将列别名作为having子句的一部分呢? 2、Where子句中不可以使用聚集函数,但可以使用聚集函数对应的别名作为子句的一部分吗?

3、where子句和having子句的区别? 4、插入语句的时候应注意什么问题?

23

巢湖学院

实验五: PL/SQL编程

实验学时:2

实验类型:设计型

一.实验目的及要求

1.了解PL/SQL块的基本结构、功能及编程规范。 2.掌握PL/SQL块中各种SQL命令的使用方法。 3.掌握PL/SQL块中流程控制语句的使用方法 4.掌握PL/SQL块中游标的使用方法 5.掌握PL/SQL块中例外处理的使用方法

二、实验主要内容

1. PL/SQL块的基本结构及使用方法。 2. PL/SQL块中流程控制语句的使用方法 3. PL/SQL块中游标的使用方法 4. PL/SQL块中例外处理的使用方法

三、实验仪器设备

在局域网环境下,有一台服务器和若干台客户机。服务器成功安装Oracle 11g数据库服务器(企业版),客户机成功安装Oracle 11g客户端软件,网络服务配置正确,数据库和客户端正常工作。

四、实验内容与步骤

(一)、PL/SQL块中查询命令的使用

1、从控制台输入一个员工编号,声明一个记录类型(RECORD类型)emp_type,然后使用该类型的变量来存储emp表中的一条记录信息(只包括姓名、职务、工资及入职日期),并输出这条记录信息。 SQL> DECLARE

/* 填充代码--定义emp_type记录类型,并定义该类型的一个变量*/ BEGIN

/*填充代码*/ EXCEPTION

WHEN N0_DATA_FOUND THEN

Dbms_output.put_line(?请输入正确的雇员号!?); END; 2、声明一个%ROWTYPE类型的变量rowVar_emp,然后使用该类型的变量来存储emp表中的一条记录信息(SMITH的情况),并输出这条记录信息。 SQL> DECLARE

24

巢湖学院

/* 填充代码--定义%ROWTYPE类型的变量rowVar_emp*/ BEGIN

/*填充代码--查询并输出*/ EXCEPTION

WHEN N0_DATA_FOUND THEN

Dbms_output.put_line(?请输入正确的雇员号!?); END

(二)、PL/SQL块中流程控制语句的使用

1、条件控制语句的使用

1)编写一个PL/SQL块,将EMP表中名为SMITH的雇员的工资进行修改,若原工资大于$2000,则加$500,否则加$1000 。

2)编写一个PL/SQL块,从控制台输入一个部门号,如果是10部门,每个员工增加10%的工资,如果是20号部门,每个员工增加5%的工资,如果是30部门,每个员工增加3%的工资,其他部门的雇员工资增加3%的工资(if?then?elsif语句或者case语句).

2、 循环控制语句的使用

求100到1000之间的水仙花数(三种循环)。

(三)、SQL/PL块中游标的使用

1、声明一个检索emp表中10号部门雇员信息的游标,然后打开游标,并指定检索的雇员姓名、工资信息,接着使用fetch…into语句和while循环读取游标中的所有雇员信息,最后输出读取的雇员信息.

(五)、SQL/PL块中例外处理的使用

1、从EMP表中删去SMITH的信息 ,并使用预定义异常来捕获可能出现的异常。

2、请编写一个PL/SQL块,从控制台输入一个雇员的编号,并给该雇员工资增加1000元,如果该雇员不存在,请提示。(自定义异常) SQL>DECLARE

/* 填充代码—声明变量和异常*/ BEGIN

/* 填充代码*/

If sql%notfound then

/* 填充代码—激发异常*/ EXCEPTION

/* 填充代码*/ END;

25


Oracle大型数据库系统基础实验指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅谈初中数学课堂教学中的小组合作学习(1).doc4

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

马上注册会员

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