大型数据库-Oracle课程设计.doc
实 验 报 告学 院( 部 ) 管理学院 实 验 室 信息中心 课 程 名 称 Oracle数据库管理 学 生 姓 名 学 号 专 业 信息管理 教务处制二012 年 05 月 23日Oracle实验报告 开课实验室: 机房 2012 年 05 月 23 日学院管理学院年级、专业、班 信管1111姓名 成绩课程名称Oracle数据库设计实验项目名 称数据库综合应用指导教师黄军仓教师评语教师签名:年 月 日一、实验目的1、熟练掌握记录的插入、修改和删除操作。 2、掌握数据查询的基本方法。 3、掌握高级查询的方法。 4、掌握创建视图、索引、触发器与存储过程的方法。二、实验原理 创建数据表“项目数据表”和“员工数据表”,并编辑输入记录。 项目数据表 项目编号 名称 负责人客户开始日期 结束日期 1 SiS 2 1 03/12/200006/12/2000 2 SiS项目21 1 04/06/200005/01/2000 3 Pet 2 2 06/17/200010/20/2001 4 Pet项目22 2 09/01/200011/03/2000 5 CCH 3 3 03/12/200012/25/2000 6 CCH_LXF 4 3 04/06/200010/20/2001 7 CCH_ZHS 7 3 06/17/200011/03/2000 8 CCH_LY 9 3 09/01/200012/25/2000 9 CCH_LYAN 19 3 03/12/200010/20/2001 10 PETER 6 4 09/01/200011/03/2000 11 REALIDEA 8 5 03/12/200012/25/2000 12 REALIDEA17 5 04/06/200010/20/2001 13 REALIDEA219 5 06/17/200011/03/2000 14 REALIDEA39 5 09/01/200012/25/2000 15 PPA 4 6 03/12/200012/25/2000 16 NBA 4 7 06/17/200010/20/2001 员工数据表 编号 姓名 性别所属部门工资1 陈有朋男 项目部 20002 孙晓晴女 项目部 30003 张晓峰男 录入部 10004 曹容雪男 检验部 15005 陈秋萍女 检验部 10006 王理斌男 检验部 20007 周晴晴女 办公室 30008 杨亭亭女 项目部 25009 马明宇男 项目部 400019 刘燕 女 项目部 30001、书写语句查询项目数据表中客户字段的值,并查看查询结果。 2、书写语句查询工资高于2000的项目部的人员的姓名。 3、书写查询语句查询来自CCH公司的项目名称(以CCH开始)和负责人姓名。 4、书写语句查询每个部门的平均工资,结果集按照平均工资多少排序。 5、使用外向联接输出所有的员工姓名和负责的项目名称。 6、使用于查询输出所有负责CCH公司项目(以CCH开始)的员工姓名,以及没有负责REALIDEA公司(以REALIDEA开始)项目的员工姓名。 7、将所有REALIDEA公司的项目的结束日期更改为2002年1月8日。 8、录入部的张晓峰决定辞职,请将员工数据库中他的记录删除,并将他负责的项目移交给杨亭亭。书写语句对数据表做相应的更改。 9、基于表“项目数据表”和“员工数据表”创建视图,要求为:(1)视图名为“员工项目”。(2)包含字段“编号”、“姓名”、“名称”和“开始日期”。(3)字段别名分别是“员工编号”、“员工姓名”、“项目名称”、“项目开始日期”。10、在数据表“员工数据表”中基于“姓名”创建索引,要求索引名为“IDX_Name”,索引类型为 B*树的非唯一索引。11、基于表“员工数据表”创建 AFTER INSERT 触发器 EmployeeSalary,将插入员工的工资额限制在5000以内。12、基于表“员工数据表”,创建存储过程proc_sum,当给定一个“所属部门”,返回该部门的工资总额。三、使用仪器、材料50台微机的机房局域网络Oracle 9i四、实验步骤1、创建”员工数据表”,”项目数据表”2、向两表中输入记录。3、问题解决。五、实验过程原始记录(数据、图表、计算等)(一)建表1、创建项目数据表Create table 项目数据表 ( 项目编号 varchar2(2), 项目名称 varchar2(30), 负责人 varchar2(2), 客户 varchar2(2), 开始日期 date, 结束日期 date);2、创建员工数据表Create table 员工数据表 ( 员工编号 varchar2(2), 姓名varchar2(30), 性别varchar2(2), 所属部门varchar2(10), 工资 number(7,2);(二)、向表中输入记录1、向项目数据表中插入记录Insert into 项目数据表values(1,sis ,2,1 , 03/12/2000 , 06/12/2000);Insert into 项目数据表values(2,sis项目 ,1,1 , 04/06/2000 , 05/01/2000);Insert into 项目数据表values(3,Pet ,2,2 , 06/17/2000 , 10/20/2001);Insert into 项目数据表values(4,Pet项目2 ,2,2 , 09/01/2000 , 11/03/2000);Insert into 项目数据表values(5, CCH ,3,3 , 03/12/2000 , 12/25/2000);Insert into 项目数据表values(6, CCH_LXF ,4,3 , 04/06/2000 , 10/20/2001);Insert into 项目数据表values(7, CCH_ZHS ,7,3 , 06/17/2000 , 11/03/2000);Insert into 项目数据表values(8, CCH_LY ,9,3 , 09/01/2000 , 12/25/2000);Insert into 项目数据表values(9, CCH_LYAN ,19,3 , 03/12/2000 , 10/20/2001);Insert into 项目数据表values(10, PETER ,6,4 , 09/01/2000 , 11/03/2000);Insert into 项目数据表values(11, REALIDEA,8,5 , 03/12/2000 , 12/25/2000);Insert into 项目数据表values(12, REALIDEA1 ,7,5 , 04/06/2000 , 10/20/2001);Insert into 项目数据表values(13, REALIDEA2 ,19,5 , 06/17/2000 , 11/03/2000);Insert into 项目数据表values(14, REALIDEA3 ,9,5 , 09/0103/12/2000 , 12/25/2000);Insert into 项目数据表values(15, PPA ,4,6 , 03/12/2000 , 12/25/2000);Insert into 项目数据表values(16, NBA ,4,7 , 06/17/2000 , 10/20/2001);2、向员工数据表中插入记录Insert into 员工数据表values(1,陈有朋 ,男,项目部 , 2000);Insert into 员工数据表values(2,孙晓晴 ,女,项目部 , 3000);Insert into 员工数据表values(3,张小峰 ,男,录入部 , 1000);Insert into 员工数据表values(4,曹容雪 ,男,检验部 , 1500);Insert into 员工数据表values(5,陈秋萍 ,女,检验部 , 1000);Insert into 员工数据表values(6,王理斌 ,男,检验部 , 2000);Insert into 员工数据表values(7,周晴晴 ,女,办公室 , 3000);Insert into 员工数据表values(8,杨亭亭 ,女,项目部 , 2500);Insert into 员工数据表values(9,马明宇 ,男,项目部 , 4000);Insert into 员工数据表values(19,刘燕 ,女,项目部 , 3000);六、实验结果及分析1、select 客户 from 项目数据表;2、select 姓名 from 员工数据表 where 工资>2000 and 所属部门='项目部'3、select 名称,姓名 from 项目数据表,员工数据表 where 名称 like 'CCH%' and 项目数据表.负责人=员工数据表.编号4、select 所属部门,avg(工资) from 员工数据表 group by 所属部门 order by avg(工资)5、select 姓名,名称 from 项目数据表,员工数据表 where 项目数据表.负责人=员工数据表.编号6、select 姓名 from 员工数据表 where 编号 in(select distinct 负责人 from 项目数据表 where 名称 like'CCH%')select 姓名 from 员工数据表 where 编号 not in(select distinct 负责人 from 项目数据表 where 名称 like'REALIDEA%');7、update 项目数据表 set 结束日期='8-1月-2002' where 名称 like'REALIDEA%'8、update 项目数据表 set 负责人=8 where 负责人=3delete from 员工数据表 where 姓名='张晓峰'9、create view 员工项目(员工编号,员工姓名,项目名称,项目开始日期) as select 编号,姓名,名称,开始日期 from 项目数据表,员工数据表 where 项目数据表.负责人=员工数据表.编号10、create index IDX_name on 员工数据表(姓名)11、create or replace trigger employeesalary after insert on 员工数据表 begin if(to_char(工资)>5000 then raise_application_error(-20500, '新员工工资不能超过5000'); endif end;12、create or replace procedure procedure_salary as department varchar2(40); v_total number; begin select sum(工资) into v_total from 员工数据表 where 所属部门=department; dbms_output.put_line('该部门的工资总额:'|v_total); end;第 6 页