大型数据库oracle学生实验报告1.docx
- 文档编号:9608581
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:15
- 大小:20.07KB
大型数据库oracle学生实验报告1.docx
《大型数据库oracle学生实验报告1.docx》由会员分享,可在线阅读,更多相关《大型数据库oracle学生实验报告1.docx(15页珍藏版)》请在冰点文库上搜索。
大型数据库oracle学生实验报告1
2011—2012年第2学期
学生实验报告
课程名称:
大型数据库oracle
教师姓名:
郭景娟
院(系):
信息科学与技术学院
试验报告
(1)
院(系):
信息科学与技术学院课程名称:
大型数据库oracle日期:
班级
学号
实验室
专业
姓名
计算机号
实验
名称
Oracle安装与维护
成绩评定
所用
软件
教师签名
实
验
目
的
或
要
求
实验目的
1.了解并掌握Oracle10的安装方法
2.了解并掌握测试安装好的Oracle10g的方法
实
验
步
骤
、
心
得
体
会
心得体会:
(可以从以下几个方面来总结:
你在上机过程中遇到了哪些难题?
你是怎么克服的?
你的收获有哪些?
你有什么没有解决的问题?
等)
试验报告
(2)
院(系):
信息科学与技术学院课程名称:
大型数据库oracle日期:
班级
学号
实验室
专业
姓名
计算机号
实验
名称
创建数据库和表
成绩评定
所用
软件
教师签名
实
验
目
的
或
要
求
实验目的
1.掌握使用DBCA创建数据库
2.掌握创建数据表的方法
实
验
步
骤
、
心
得
体
会
1、使用DBCA创建数据库(写出大致步骤)
2、在ORCL数据库中创建表Employees、表Departments和表Salary,表结构如附录所示。
(1)在OEM中分别创建表(写出大致步骤)
(2)使用SQL语句分别创建表
心得体会:
(可以从以下几个方面来总结:
你在上机过程中遇到了哪些难题?
你是怎么克服的?
你的收获有哪些?
你有什么没有解决的问题?
等)
试验报告(3)
院(系):
信息科学与技术学院课程名称:
大型数据库oracle日期:
班级
学号
实验室
专业
姓名
计算机号
实验
名称
管理表
成绩评定
所用
软件
教师签名
实
验
目
的
或
要
求
实验目的
1.掌握修改、删除表的的方法。
2.掌握主键约束、外键约束、唯一约束和检查约束的建立及维护方法。
3.掌握外部表、临时表的使用方法。
4.掌握使用SQL语句对数据库表进行插入、修改和删除数据操作。
实
验
步
骤
、
心
得
体
会
1.使用PL/SQL语句分别向表Employees、Departments和Salary中插入如下表所示数据记录。
2.使用PL/SQL命令修改各表中的某个记录的字段值,修改完后使用select语句观察数据的变化。
(1)将表salary中编号为110001的职工收入改为2890;
updatesalary
setincome=2890
whereemployeeid='110001';
(2)将表Departments表中生产部的名称修改为生产计划部;
updatedepartments
setdepname='生产计划部'
wheredepname='生产部';
(3)给每个职工增加收入100元。
updatesalary
setincome=income+100;
3.删除所有性别为男的职工的记录。
deletefromemployees
wheresex='男';
4.创建约束
(1)在employees表中创建主键约束,主码为employeeID,约束名为pk_employees_employeeID.
altertableemployees
addconstraintpk_employees_employeeid
primarykey(employeeid);
(2)创建外键约束,子表employees的departmentID字段参照主表
departments中的departmentID字段,约束名为fk_emp_dep_departtmentID.
altertableemployees
addconstraintfk_emp_dep_departtmentID
foreignkey(departmentID)referencesdepartments(departmentID);
(3)创建检查约束,employees表中的sex字段只能输入字符"男"或"女",约束名为ck_sex.
altertableemployees
addconstraintck_sex
check(sexin('男','女'));
(4)在departments表的departmentName字段上创建唯一约束un_departmentName.
altertabledepartments
addconstraintun_departmentname
unique(depname);
5.修改及删除表
(1)将employees表中的zip字段删除,然后再增加一个字段,字段名为QQ,15位的变长字符型.
altertableemployeesdropcolumnzip;
altertableemployeesadd(QQvarchar2(15));
(2)将departments表删除.
droptabledepartments;
6.将departments表中的数据以纯文本的形式保存到记事本中,并以逗号分隔,保存文件名为dp.txt,内容如下所示:
1,办公室
2,人力资源部
3,销售部
在oracle中创建dp.txt的外部表,然后用select语句进行简单查询.
7.创建事务临时表ttable保存employees表的临时数据,创建会话临时表保存departments表的临时数据.比较两个表的差别.
试验报告(4)
院(系):
信息科学与技术学院课程名称:
大型数据库oracle日期:
班级
学号
实验室
专业
姓名
计算机号
实验
名称
数据库的查询
成绩评定
所用
软件
教师签名
实
验
目
的
或
要
求
实验目的
1.掌握SELECT语句的基本语法;
2.掌握子查询的表示;
3.掌握连接查询的表示;
4.掌握数据汇总的方法;
5.掌握层次查询的方法;
6.掌握分析查询的方法。
实
验
步
骤
、
心
得
体
会
1-4实验数据基于实验二给出的数据库表结构,及实验三给出的表数据。
1.SELECT语句的基本使用
(1)查询每个雇员的所有数据;
select*
fromemployees;
(2)查询每个雇员的地址和电话;
selectaddress,phone
fromemployees;
(3)查询EmployeeID为010001的雇员的基本信息;
select*
fromemployees
whereemployeeID='010001';
(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址和电话;
selectaddressas地址,phoneas电话
fromemployees
wheresex='女';
(5)计算每个雇员的实际收入;
selectincome
fromsalary;
(6)找出所有姓王的雇员的部门号;
selectdepartmentid
fromemployees
wherenamelike'王%';
(7)找出所有收入在2000-3000之间的雇员号码。
selectemployeeid
fromsalary
whereincomebetween2000and3000;
2.子查询的使用
(1)查找在财务部工作的雇员的情况;
select*
fromemployees
wheredepartmentidin
(selectdepartmentid
fromdepartments
wheredepartmentname='财务部')
(2)查找财务部年龄不低于销售部雇员年龄的雇员的姓名。
select*
fromemployees
wheredepartmentidin
(selectdepartmentid
fromdepartments
wheredepartmentname='财务部')
andbirthday!
>all(selectbirthday
fromemployees
wheredepartmentidin
(selectdepartmentid
fromdepartments
wheredepartmentname='销售部'))
3.连接查询的使用
(1)查询每个雇员的情况及其薪水情况;
select*
fromemployees,salary
whereemployees.employeeid=salary.employeeid;
(2)查找财务部收入在2200元以上的雇员姓名及其薪水详情。
selectname,salary.*
fromemployees,salary,departments
whereemployees.employeeid=salary.employeeidand
employees.departmentid=departments.departmentidand
departmentname='财务部'andincome>2200
4.数据汇总
(1)求各部门的雇员数;
selectcount(employeeid)as'各部门的雇员人数'
fromemployees
groupbydepartmentid
(2)将各雇员的情况按收入由低到高排列;
selectemployees.*,salary.*
fromemployees,salary
whereemployees.employeeid=salary.employeeid
orderbyincome
(3)求财务部雇员的平均收入;
selectavg(income)as'财务部平均收入'
fromsalary
whereemployeeidin
(selectemployeeid
fromemployees
wheredepartmentidin
(selectdepartmentid
fromdepartments
wheredepartmentname='财务部'))
(4)求财务部雇员的平均实际收入;
selectavg(income-outcome)as'平均实际收入'
fromsalary
whereemployeeidin
(selectemployeeid
fromemployees
wheredepartmentidin
(selectdepartmentid
fromdepartments
wheredepartmentname='财务部'))
(5)求财务部雇员的总人数。
selectcount(employeeid)as'财务部总人数'
fromemployees
wheredepartmentidin
(selectdepartmentid
fromdepartments
wheredepartmentname='财务部')
5.层次查询
基于自行车结构的数据进行层次查询实验,脚本如附录:
(1)按自行车结构层次的先后顺序,查询自行车树状结构数据;
selectlevel,part_id,part_name,parent_id,mp_cost
frombicycle
startwithpart_id=1
connectbypriorpart_id=parent_id
orderbylevel;
selectlevel,
lpad('',3*level-1)||part_nameaspart_Name,
mp_cost
frombicycle
startwithpart_id=1
connectbypriorpart_id=parent_id;
(2)查询自行车导向系统分支的树状结构数据;
selectlevel,
lpad('',3*level-1)||part_nameaspart_Name,
mp_cost
frombicycle
startwithpart_id=(selectpart_id
frombicycle
wherepart_namelike'%导向系统%')
connectbypriorpart_id=parent_id;
(3)在自行车树状结构数据中显示成本小于100元的零部件信息;
selectlevel,
lpad('',3*level-1)||part_nameaspartName,
mp_cost
frombicycle
wheremp_cost<100
startwithpart_id=1
connectbypriorpart_id=parent_id;
(4)对自行车的成本进行加密,然后显示出来,加密密钥可任意给定。
6.分析查询
基于某书店2006年的图书销售的数据进行分析查询实验,脚本如附录:
(1)查询每个销售员的销售额,并使用sum()分析函数对每个窗口执行累加运算的分析,窗口范围为当前行及其后两行;
(2)制作一个总计表,表中包括每一个销售人员在每一个销售区域的销售额以及该销售额占该销售区域销售总额的比率;
(3)查询每个销售区域的销售额,并使用rank()函数计算每一行的相对位置。
心得体会:
(可以从以下几个方面来总结:
你在上机过程中遇到了哪些难题?
你是怎么克服的?
你的收获有哪些?
你有什么没有解决的问题?
等)
试验报告(5)
院(系):
信息科学与技术学院课程名称:
大型数据库oracle日期:
班级
学号
实验室
专业
姓名
计算机号
实验
名称
安全性管理
成绩评定
所用
软件
教师签名
实
验
目
的
或
要
求
实验目的
1.掌握使用用户实现数据库安全性;
2.掌握使用角色实现数据库安全性。
实
验
步
骤
、
心
得
体
会
1.创建用户
(1)创建一个用户tom,密码为oracle;
(2)授予连接数据库权限、创建表权限,并允许其将权限转授予其它用户;
(3)设置其默认表空间为USERS,并分配20M的配额;
(4)连接到tom账户下,将创建表权限授予SCOTT;
(5)在tom账户下创建表xs,字段为xm,cj;
(6)将xs表的插入数据权限授予SCOTT;
(7)连接到SCOTT账户下,插入一条数据(lucy,80)。
2.创建角色
(1)连接到system账户下,授予tom创建角色的权限;
(2)创建一个以你的姓名的拼音首字母为名字的用户;
(3)连接到tom账户下,创建一个角色student,密码为student;
(4)授予student角色查询xs表的权限;
(5)将student角色赋予你自己的名字的用户。
心得体会:
(可以从以下几个方面来总结:
你在上机过程中遇到了哪些难题?
你是怎么克服的?
你的收获有哪些?
你有什么没有解决的问题?
等)
试验报告(6)
院(系):
信息科学与技术学院课程名称:
大型数据库oracle日期:
班级
学号
实验室
专业
姓名
计算机号
实验
名称
存储过程的使用
成绩评定
所用
软件
教师签名
实
验
目
的
或
要
求
实验目的
1.掌握存储过程的创建方法;
2.掌握存储过程的调用方法;
实
验
步
骤
、
心
得
体
会
1.创建添加职员记录的存储过程EmpAdd,通过参数接收职员信息,然后将数据插入到EMP表中。
2.调用EmpAdd,往EMP表中插入一条数据,具体数据由自己组织,然后用SQL语句查询EMP表,检查存储过程是不是正确执行。
3.区分in、out和inout三类参数
(1)编写一个计算EMP表中指定部门职员人数的存储过程count_num1,定义一个in类型的参数bm用于输入部门信息,定义一个out类型的参数person_num用于输出部门人数。
(2)编写一个与
(1)相同的存储过程count_num2,但参数类型都定义为inout类型。
(3)分别调用这两个过程,比较两者在参数使用上的不同之处。
试验报告(7)
院(系):
信息科学与技术学院课程名称:
大型数据库oracle日期:
班级
学号
实验室
专业
姓名
计算机号
实验
名称
数据库综合设计
成绩评定
所用
软件
教师签名
实
验
目
的
或
要
求
实验目的
1.掌握PL/SQL程序块的结构;
2.掌握时间戳的使用;
3.掌握记录、PL/SQL表的使用;
4.掌握显示游标的使用;
5.掌握异常处理的方法。
实
验
步
骤
、
心
得
体
会
1.PL/SQL程序块
编写一个程序块,完成10以内偶数的累积。
2.时间戳
(1)显示一个时间戳,精确到纳秒。
(2)创建一个只包含一个数值型字段的表,往表中插入10000条记录,利用时间戳计算所用时间。
3.记录、PL/SQL表
(1)创建一个记录类型保存学生数据,类型名为STUDENT,包含XM,XB,BJ三个变量,然后定义一个该类型的变量STUDENT1,输入学生本个的信息,并输出。
(2)创建一个基类型为字符型的PL/SQL表类型,保存学生的姓名,然后定义一个该类型的变量STUDENT2,输入5名同学的姓名,并输出。
4.显示游标
编写一个程序块,定义一个游标,用于处理EMP表中工资大于1500的员工信息,如果员工的工资在1500到2000之间,则加上200,如果大于2000,则加上100,修改结果保存到EMP表中,并显示输出。
定义处理数据的变量要求用到%type。
5.异常处理
定义一个自定义异常too_many,当EMP表中的记录条数超过10条时,抛出异常,并输出“员工数量过多!
”的信息。
心得体会:
(可以从以下几个方面来总结:
你在上机过程中遇到了哪些难题?
你是怎么克服的?
你的收获有哪些?
你有什么没有解决的问题?
等)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大型 数据库 oracle 学生 实验 报告