《Oracle数据库管理系统》实验指导书.doc

上传人:文库蛋蛋多 文档编号:2395119 上传时间:2023-02-17 格式:DOC 页数:26 大小:139.50KB
返回 下载 相关 举报
《Oracle数据库管理系统》实验指导书.doc_第1页
第1页 / 共26页
《Oracle数据库管理系统》实验指导书.doc_第2页
第2页 / 共26页
《Oracle数据库管理系统》实验指导书.doc_第3页
第3页 / 共26页
《Oracle数据库管理系统》实验指导书.doc_第4页
第4页 / 共26页
《Oracle数据库管理系统》实验指导书.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《《Oracle数据库管理系统》实验指导书.doc》由会员分享,可在线阅读,更多相关《《Oracle数据库管理系统》实验指导书.doc(26页珍藏版)》请在三一办公上搜索。

1、Oracle数据库管理系统实验指导书 编写 主审计算机与信息技术学院信息科学系2011.1目 录实验一 熟悉SQL命令与SQL*PLUS命令的应用1实验二 SQL语言中的数据操纵、事务控制和数据定义语句4实验三 PL/SQL编程7实验四 数据库触发器、存储过程和存储函数11实验五 数据表的管理14实验六 索引的管理17实验七 安全管理19实验八 触发器和游标21前 言Oracle数据库是目前最为流行和成熟的几种大型关系数据库之一。oracle数据库管理系统课程以Oracle9i为主,在学习数据库系统概论的基础上,进一步理解关系数据库的概念、原理。通过对Oracle数据库系统的学习,使学生掌握数

2、据库的基本理论和Oracle数据库操作的基本方法,熟悉SQL基本命令的运用,了解运用Oracle数据库知识处理复杂问题的方法。使学生具有运用Oracle进行数据库服务器端的程序开发的基本能力。为了加强学生对Oracle数据库系统的操作能力,特编写该实验指导书,希望给学生提供一定的指导。本指导书由李学贵编写,冯亚丽教授主审,由于时间仓促,作者的水平有限,书中难免有不足之处,恳请广大师生批评指正。编者2011年1月实验一 熟悉SQL命令与SQL*PLUS命令的应用一、实验目的 1、熟悉SQL语言交互式使用工具SQL*PLUS的使用方法2、熟悉SQL*PLUS常用命令的功能和使用方法3、掌握SQL语

3、言中简单查询语句的功能和使用方法二、实验环境1、硬件设备:计算机局域网,服务器1台,客户机若干台2、软件系统:Windows 2003 Server 网络操作系统,Windows 2003/XP客户机操作系统; Oracle9i服务端数据库系统,客户端工具。三、实验内容1、SQL*PLUS的使用(1) 进入(启动)SQL*PLUS在Windows环境下,双击SQL*PLUS图标或从程序组找SQL*PLUS ,出现登录窗口输入正确的数据库用户名、密码和连接字符串后,若连接数据库成功,则会出现如下提示符SQL(2) 退出 SQL*PLUS SQLexit 则退回到Windows桌面。 (3) 创建

4、表结构:Create table 创建部门登记表dept和雇员登记表emp的结构 SQL Create table dept ( deptno number(2) not null, dname char(14), loc char(13);SQL Create table emp ( empno number(4) not null, ename char(9), job char(10), mgr number(4), Hiredate date, sal number(7,2), comm number(7,2), deptno number(2) not null ); (4) 显示表

5、结构 显示部门登记表dept和雇员登记表emp的结构 SQLdesc dept SQL desc emp (5) 向表中插入记录 向部门登记表dept中插入一条记录 SQL insert into dept Values (60,Computer,Beijing); SQL select * from dept; 向部门登记表dept中连续插入多条记录SQL insert into dept (deptno,dname,loc) Values ( &deptno,&dname,&loc); (6) 执行SQL缓冲区中的命令 SQL/ (直接执行) SQLrun (先显示命令的内容,再执行 )

6、(7) 执行磁盘上的命令文件 a. 先调入缓冲区,再运行: SQLget f:oradept.sql SQL/ b. 用 或start命令将指定命令文件调入缓冲区并执行。 SQLf:ora dept.sql 或 SQLstart f:ora dept.sql 2、简单查询语句(1) 无条件简单查询:查表中所有记录SQL select Dname, Deptno 2 From dept;对查询结果进行计算和统计SQL select count(*) ALL_EMP, sum(sal) ALL_Sal 2 From emp;(2) 有条件简单查询:查表中部分记录 查在20号部门工作的雇员姓名和工资

7、SQL select ename,sal,deptno 2 From emp 3 where deptno=20; 查找工种是职员或分析员的雇员姓名和工种SQL select ename,job 2 From emp 3 where job IN (Clerk,Analyst); 查找以“S”开头的雇员姓名和所在部门 SQL select ename,deptno 2 From emp 3 where ename like S%;按工资升序排列20号部门的雇员SQL select ename,sal,deptno 2 From emp 3 where deptno=20 4 order by

8、sal asc ; 查所有部门中工资大于2800美元的雇员 SQL select ename,sal from Account where sal 2800 union select ename,sal from Research Where sal 2800 Union Select ename,sal From sales Where sal 2800 ; 查在所有部门中都存在的工种SQL select Job from Account Intersect select Job from Research Intersect Select Job From sales; 查在Account

9、部门中有哪些职业,是Sales部门中所没有的 SQL select Job from Account minus Select Job From sales; 实验二 SQL语言中的数据操纵、事务控制和数据定义语句一、实验目的1、掌握SQL语言中数据操纵命令的功能及其使用方法2、掌握SQL语言中事务控制命令的功能及其使用方法3、掌握SQL语言中数据定义命令的功能及其使用方法二、实验环境1、硬件设备:计算机局域网,服务器1台,客户机若干台2、软件系统:Windows 2003 Server 网络操作系统,Windows 2003/XP客户机操作系统; Oracle9i服务端数据库系统,客户端工具

10、。三、实验内容1、数据操纵命令的使用(1) 数据插入 向Dept 表插入一行数据(插入所有列时可省略列名) 。 SQLinsert into dept Values (60,Computer,Beijing); 向dept表中一次插入多个纪录(所有字段可用*代替) 。 SQL insert into dept (deptno,dname,loc) Values ( &deptno,&dname,&loc); 将dept表中所有记录插入到空表department中。 SQL insert into department select * from dept;向Emp表中插入一条与Smith 内容

11、相同的记录,但姓名改为Richard,雇员号改为9999。 SQL insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) select 9999,Richard,job,mgr,hiredate,sal,comm,deptno from emp where ename=Smith; (2) 数据修改将 Martin 提升为经理,工资加¥1000 。 SQL update emp Set job = Manager,sal=sal+1000 Where ename= Martin; 将30号部门所有雇员工资和奖金,变为20号部

12、门雇员的最高工资和奖金。 SQL update emp Set (sal,comm)=( Select Max(sal),max(NVL(comm,0) From emp Where deptno =20) Where deptno=30;(3) 数据删除将 Martin从公司删除 。 SQL delete from emp Where ename= Martin;2、事务控制命令的使用(1) 事务提交命令CommitSQL commit;(2) 事务回退命令Rollback SQL Rollback ;3、数据定义命令的使用(1) 表操作手工创建表dept结构。 SQL Create tab

13、le dept ( deptno number(2) not null, dname char(14), loc char(13); 通过复制创建表deptpartment结构,其结构与dept相同。SQL Create table deptpartment as select * from dept where 1=2; 将dept 表中Dname 列宽度加大到20个字符。 SQL Alter table dept modify dname char (20) ; 为表dept增加一列All_emp 用来存放部门人数 。 SQL Alter table dept add all_emp nu

14、mber(3); 删除dept表。 SQL drop table dept;(2) 视图操作为20号部门的雇员创建一个视图,包括姓名,工资,部门号 。 SQL Create view emp_view(name ,salary ,no) As Select ename ,sal ,deptno From emp where deptno=20 ;(3) 索引操作为emp表建立empno列上的唯一索引。 SQL create unique index empno_index on emp(empno); (4) 同义词操作为gx1用户的dept表建立同义词New_dept 。 SQL creat

15、e synonym new_dept for gx1.dept; (5) 序列生成器操作创建一个序列生成器deptno_seq,起始值为50,间隔为10 。 SQL create sequence deptno_seq Start with 50 increment by 10; 列出deptno_seq的下次值(第一次使用时为50 ) SQL select deptno_seq.nextval NEXT_VAL From dual;实验三 PL/SQL编程 一、实验目的1、了解PL/SQL块的基本结构与功能2、掌握PL/SQL块中各种SQL命令的使用方法3、掌握PL/SQL块中流程控制语句的

16、使用方法4、掌握PL/SQL块中游标的使用方法5、掌握PL/SQL块中异常处理的使用方法二、实验环境1、硬件设备:计算机局域网,服务器1台,客户机若干台2、软件系统:Windows 2003 Server 网络操作系统,Windows 2003/XP客户机操作系统; Oracle9i服务端数据库系统,客户端工具。三、实验内容1、PL/SQL块中查询命令的使用将7788号雇员的工资和奖金作为Smith的工资和奖金。 SQL DECLARE v_empno emp.empno%TYPE:=7788; v_ename emp.ename%TYPE:=Smith; v_sal emp.sal%TYPE

17、; v_comm m%TYPE; BEGIN SELECT sal,comm INTO v_sal,v_comm FROM EMP WHERE empno=v_empno; update emp set sal=v_sal,comm=v_comm where ename= v_ename ; commit; END;查询SMITH的情况 。 SQL DECLARE emp_rec EMP%ROWTYPE; v_ename EMP.ename%TYPE:=SMITH; BEGIN SELECT * INTO emp_rec FROM EMP WHERE ENAME=v_ename; - END;

18、 2、PL/SQL块中数据操纵命令的使用向EMP表插入一新雇员 。 SQL DECLARE v_deptno dept.deptno%TYPE not null:=50; v_dname dept.dname%TYPE:=Computer; v_loc dept.loc%TYPE:=Beijing; BEGIN insert into dept(deptno,dname,loc) values(v_deptno,v_dname,v_loc); commit work; END;修改7788号雇员的工资 。 SQL DECLARE v_empno emp.empno%TYPE:=7788; v_

19、addsal emp.sal%TYPE; BEGIN v_addsal:=1000; UPDATE EMP SET sal=sal+v_addsal WHERE empno=v_empno; COMMIT; END; 从EMP表中删除7788号雇员 。 SQL DECLARE BEGIN DELETE FROM EMP WHERE empno=7788; COMMIT; END; 3、PL/SQL块中流程控制语句的使用(1) 条件控制语句的使用将EMP表中名为SMITH的雇员的工资进行修改,若原工资大于$2000,则加$500,否则加$1000 。 SQLDECLARE v_ename emp

20、.ename%TYPE:=SMITH; v_addsal emp.sal%TYPE; v_sal emp.sal%TYPE; BEGIN SELECT sal INTO v_sal FROM EMP WHERE ENAME=v_ename; IF v_sal20OO THEN v_addsal:=500; ELSE v_addsal:=1000; END IF; UPDATE EMP SET sall=sal+v_addsal WHERE ENAME=v_ename; commit; END;(2) 循环控制语句的使用给10号部门增加新雇员,只确定雇员号,其它信息忽略 。 SQLDECLARE

21、 v_empno emp.empno%TYPE:=8000; BEGIN LOOP INSERT INTO emp(deptno,empno) VALUES( 10,v_empno); v_empno:=v_empno+l00; EXIT WHEN v_empno=9000; END LOOP; END; (3) GOTO控制语句的使用给10号部门增加新雇员,只确定雇员号,其它信息忽略 。 SQLDECLRE v_empno emp.empno%TYPE:=8000; BEGIN lab1 INSERT INTO emp(deptno,empno) VALUES(l0,v_empno); v_

22、empno:=v_empno+100; IF v_empnoDECLARE v_deptno emp.deptno%TYPE; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; CURSOR C1 IS SELECT ename,sal FROM EMP WHERE DEPTNO=v_deptno; BEGIN v_deptno:=10; OPEN Cl; FETCH C1 INTO v_ename,v_sal; CLOSE C1 ; END;查询10号部门所有雇员姓名、工资,并插入到一临时表TMP中 。 SQLDECLARE v_deptno emp.d

23、eptno%TYPE:=10; CURSOR C1 IS SELECT ename,sal FROM EMP WHERE deptno=v_deptno; emp_ec C1%ROWTYPE; BEGIN FOR emp_rec IN C1 LOOP INSERT INTO Tmp(ename,sal) VALUES(emp_rec.ename,emp_rec.sal); END LOOP; GOMMIT WORK; END;5、PL/SQL块中异常处理的使用从EMP表中删去SMITH的信息 。 SQLDECLARE v_ename emp.ename%TYPE:=SMITH; BEGIN D

24、ELETE FROM emp WHERE ename=v_ename; COMMIT WORK; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK WORK; INSERT INTO TEMP(message) VALUES(SMITH is not found); COMMIT WORK; WHEN TOO_MANY_ROWS THEN ROLLBACK WORK; INSERT INTO TEMP(message) VALUES(Found too many rows in emp); COMMIT WORK; WHEN OTHERS THEN ROLL

25、BACK WORK; INSERT INTO TEMP(message) VALUES(Other error occurred); COMMIT WORK; END; 实验四 数据库触发器、存储过程和存储函数一、实验目的1、掌握数据库触发器的功能与使用方法2、掌握存储过程的功能与使用方法3、掌握存储函数的功能与使用方法二、实验环境1、硬件设备:计算机局域网,服务器1台,客户机若干台2、软件系统:Windows 2003 Server 网络操作系统,Windows 2003/XP客户机操作系统; Oracle9i服务端数据库系统,客户端工具。三、实验内容1、数据库触发器的使用创建一个数据库触发

26、器,当任何时候某个部门从dept表中删除时,该触发器将从emp表中删除该部门的所有雇员。 SQLCreate trigger del_emp_deptno_trig Before delete ON dept For each row BEGIN delete from emp where deptno=:old.deptno; End del_emp_deptno_trig;2、存储过程的使用创建一个统计各部门雇员人数的据库存储过程。SQLCreate Procedure count_proc(in_deptno in emp.deptno%TYPE, out_num out NUMBER)

27、 As BEGIN If in_deptno=10 then select count(deptno) into out_num from emp where deptno=in_deptno; ElsIf in_deptno=20 then select count(deptno) into out_num from emp where deptno= in_deptno ; ElsIf in_deptno=30 then select count(deptno) into out_num from emp where deptno= in_deptno ; Else select coun

28、t(deptno) into out_num from emp where deptno=40; End if; End count_proc ;3、存储函数的使用创建一个统计不同部门雇员人数的据库存储函数SQLCreate Function count _func( in_deptno emp.deptno%TYPE) Return number As out_num number; BEGIN If in_deptno=10 then select count(deptno) into out_num from emp where deptno=in_deptno; ElsIf in_de

29、ptno=20 then select count(deptno) into out_num from emp where deptno= in_deptno ; ElsIf in_deptno=30 then select count(deptno) into out_num from emp where deptno= in_deptno ; Else select count(deptno) into out_num from emp where deptno=40; End if; Return(out_num ); End count_func; 用实际参数代替形式参数。 SQL e

30、xecute empdnum:= count_proc (10);实验五 数据表的管理一、实验目的1、利用SQL语句(2种)创建表;2、掌握在OEM中创建表;3、掌握定义表的约束、添加、删除和激活约束;4、掌握修改表的各种操作。二、实验环境1、硬件设备:计算机局域网,服务器1台,客户机若干台2、软件系统:Windows 2003 Server 网络操作系统,Windows 2003/XP客户机操作系统; Oracle9i服务端数据库系统,客户端工具。三、实验内容一、 实验内容和步骤1、创建数据表 CREATE TABLE (列级完整性约束条件 , 列级完整性约束条件 ,) 参数设置;2、创建带约束的数据表CREATE TABLE (列级完整性约束条件 , 列级完整性约束条件 ,) 参数设置AS 子查询 3 定义约束(1)列级约束语法格式:CONSTRAINT constraint_name constraint_type condition(2)表级约束语法格式:CONSTRAINT constraint_name constraint_type column1_name,column2_name,|condition 3、表约束的修改ALTER TABLE ADD MODIFY ENABLE DISA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号