收藏 分销(赏)

太原理工大学Oracle实验报告.doc

上传人:w****g 文档编号:1227602 上传时间:2024-04-18 格式:DOC 页数:48 大小:3.37MB
下载 相关 举报
太原理工大学Oracle实验报告.doc_第1页
第1页 / 共48页
太原理工大学Oracle实验报告.doc_第2页
第2页 / 共48页
太原理工大学Oracle实验报告.doc_第3页
第3页 / 共48页
太原理工大学Oracle实验报告.doc_第4页
第4页 / 共48页
太原理工大学Oracle实验报告.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、实验由本人当时亲自完成仅供参考,希望可以帮助大家实 验 报 告课程名称: 大型数据库系统 实验项目: Oracle实用教程 实验地点: 逸夫楼202 专业班级: 00000000班 学号:00000000 学生姓名: 氣宇軒昂 指导教师: 2013年 13月 13日太原理工大学实验报告学院名称软件学院专业班级0000实验成绩学生姓名氣宇軒昂 学号000000000实验日期13/13课程名称Oracle实验题目Oracle11g的安装与配置与创建表实验内容及完成情况:一、 实验目的和要求1、 了解数据库的结构以及一些基本概念。2、 安装Oracle的软件,学会使用大型数据库的软件3、 了解表的结

2、构特点。4、 了解Oracle的基本数据类型。5、 学会使用DBCA创建数据库。6、 学会使用界面方式创建表。7、 学会使用SQL语句手工创建数据库。8、 学会使用SQL语句创建表。1、首先要明确,能够创建数据库的用户必须是系统管理员,或是被授使用CREATEDATABASE语句的用户。2、其次创建数据库必须要确定数据库名、所有者(及创建数据库的用户)、数据库大小、SGA分配和存储数据库文件。3、然后,确定数据库包含哪些表以及所包含的各表的结构,还要了解Oracle11g的常用数据类型,以创建数据库的表。4、此外还要了解两种常用的数据库、表的方法,即利用DBCA创建和使用PL/SQL的CREA

3、TE DATABASE语句创建。二、实验内容和原理创建企业管理的员工管理数据库YGGL,包含Employees(员工自然信息)表、Departments(部门信息)表和Salary(员工薪水情况)表。各表的结构如下图所示。表T1.1 Employees表结构列名数据类型长度是否允许为空说明EmployeesChar6员工编号,主键NameChar10姓名BirthdayDate出生日期SexNumber1性别AddressChar20地址ZipChar6邮编PhoneNumberChar12电话号码DpartmentIDChar3员工部门号,外键表T1.2 Departments表结构列名数据

4、类型长度是否允许为空说明DepartmentIDChar3部门编号,主键DepartmentNameChar20部门名NoteVarchar2100备注表T1.3 Salary表结构列名数据类型长度是否允许为空说明EmployeesIDChar6员工编号,主键InComeNumber8,2收入OutcomeNumer8,2支出三、主要仪器设备Pc电脑一台,并且安装好Oracle。四、 实验结果与分析1. 数据库的安装配置 安装的过程: 图1.1 安装1 图1.2 安装2 图1.3 安装3 图1.4 安装4 图1.5 安装5安装好后的界面 OEM的界面: 图1.6 oem的登录界面 图1.7 打

5、开后的oem SqlDeveloper的界面:2. 利用DBCA创建数据库以下提示信息说明数据库YYGL创建成功。3. 在OEM中分别创建表启动数据库YYGL的OEM页面,使用SYSTEM用户登录,在“方案”属性页中选择“表”,单击鼠标左键,再出现的“表搜索”页面上单击“创建”按钮,进入“创建表”页面,在该页面的各个选项卡上输入表Employees各个字段信息、约束条件、分区和存储情况等设置,单击“确定”按钮即可完成创建,Department和Salary的创建与上相同。如上就是创建表的页面,当出现下图时,表示,创建成功。如上图,表示Emploryees创建成功。Departmens和Sara

6、ry的创建与Emploryees相同。4. 在OEM中删除已创建的表点击“使用选项删除”出现下图:选择第一项,并且选中删除所有引用完整性约束条件,就可以彻底删除表。下面就用另一种工具SQL Developer去实现表的创建和删除!3. 在SQL Developer中创建表(1)应该创建一个连接,也就是说用SQL Developer连接到YGGL数据库,连接成功后会提示连接成功,并且可以出现yggl_ora连接YGGL的所有列表,如图:(2) 展开yggl_ora连接,右击“Table”节点选择“New Table”菜单项,在“Create Table”窗口中输入表名Emploryees,选中“

7、Adcanced”复选框,设置表Emploryees的各个列及约束条件,单击“确定”按钮完成表Emploryees。完成好表的创建后,列表中就会有Emploryees的相应信息,如下图:表Departments和表Salary的创建与创建表Emploryees相同。4. 使用SQL Developer 删除表展开“Table”节点,找到表Emploryees,右击鼠标,选择“Table”菜单项下的“Drop”子菜单项,在弹出的确认对话框中单击“应用”按钮即可删除Emploryees表。如上图,点击“应用”后再“确定”就完成删除了!5. 使用PL/SQL语句创建表打开SQL/Plus,连接到sy

8、stem,然后键入相应的创建表语句即可,如下图:如上图所示,三个表都创建成功了,用PL/SQL删除表的操作是DROP TABLE table_name,在这里就不演示了,因为现在创建的表为下次实验使用。五、讨论、心得通过这一节的实验首先我学会了如何安装Oracle,安装后由于Oracle占用内存很大,所以还学会了启动Oracle所需要启动的服务,这样在不用Oracle的时候可以节省内存,提高计算机运行速率,再者就是学会了用Oracle提供的DBCA创建数据库,最后学会的是用三种工具如何创建和删除一张表,其中我认为虽然SQL Developer使用起来更方便,更高效,但是对于软件专业的我们必须熟

9、练用SQL/Plus去执行各种命令,有时图形界面所提供的功能是很有限的,而且如果想要提高数据库的效率,有时在管理中为了不占用大量内存,只提供控制台的方式去管理数据库。教师签字:太原理工大学实验报告学院名称软件学院专业班级0000实验成绩学生姓名氣宇軒昂 学号000000000实验日期13/13课程名称Oracle实验题目表的修改查询,视图操作,索引实验内容及完成情况:一、实验目的和要求1、 学会使用PL/SQL语句对数据库表进行插入、修改和删除数据的操作。2、 学会使用SQL/Developer对数据库表进行插入、修改和删除数据的操作。3、 了解数据更新操作时要注意数据完整性。4、 了解PL/

10、SQL语句对表数据操作的灵活控制功能。1、 掌握SELECT语句的基本语法。2、 掌握子查询的表示方法。3、 掌握链接查询的表示方法。4、 掌握数据汇总的方法。5、 掌握SELECT语句的GROUPBY子句的作用和使用方法。6、 掌握SELECT语句的ORDERBY子句的作用和使用方法。7、 掌握视图的使用方法。1、了解SELECT语句的基本语法格式和执行方法。2、了解子查询的表示方法、连接查询和数据汇总的方法。3、了解SELECT语句的GROUP BY子句的作用和使用方法。4、了解SELECT语句的ORDER BY子句的作用。5、了解视图的作用和创建视图的方法。6、了解视图的使用方法。1、首

11、先了解对表数据的插入、删除、修改都属于表数据的更新操作。对表数据的操作可以在SQL Developer中进行,也可以有PL/SQL语句实现。2、其次要掌握PL/SQL中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE、DELETE(或TRANCATE TABLE)。3、 要特别注意在执行插入、删除、修改等数据更新操作时,必须保证数据完整性。4、 此外,还要了解使用PL/SQL语句对表数据进行插入、修改及删除时,比在SQL Developer 中操作表数据更灵活,功能更强大。二、实验内容和原理分别使用SQL Deveploper 和PL/SQL语句,在实验1建立的数据库YG

12、GL的三个表Employees、Departments 和 Salary 中分别插入多行数据记录,然后修改和删除一些记录。使用PL/SQL进行有限的修改和删除。在实验1中,用于实验的YGGL数据库中的三个表已经建立,现在要讲各表的样本数据添加到表中。样本数据如表T2.1、表T2.2和表T2.3所示。表T2.1 Employees表数据样本编号姓名出生日期性别住址邮编电话号码部门号000001王林1966-01-231中山路32-1-508210003833556682010008伍容华1976-03-281北京东路100-2210001833213211020010王向容1982-12-091

13、四牌楼10-0-108210006837923611020018李丽1960-07-300中山东路102-2210002834133011102201刘明1972-10-181虎距路100-2210003836066085102208朱俊1965-09-281牌楼巷5-3-106210004847088175108991钟敏1979-08-100中山路10-3-106210003833467223111006张石兵1974-10-011解放路34-1-203210010845634185210678林涛1977-04-021中山北路24-35210008834673363302566李玉珉19

14、68-09-201热河路209-3210001587659914308759叶凡1978-11-181北京西路3-7-52210002833089014504209陈琳琳1969-09-030汉中路120-4-12210018844681584表T2.2 Departments表数据样本部门号部门名称备注部门号部门名称备注1财务部NULL4研发部NULL2人力资源部NULL5市场部NULL3经理办公室NULL表T2.3 Salary表数据样本编号收入支出编号收入支出0000012100.8123.091089913259.98281.520100081582.6288.030200102860

15、.0198.01022012569.88185.653087592347.68180.01110061987.0179.583087592531.98199.085042092066.15108.02106782240.0121.03025662980.7210.21022081980.0100.0三、主要仪器设备Pc电脑一台,并且安装好Oracle。四、实验结果与分析1. 使用SQL Developer操作数据用命令行的方式在Employees中插入数据,要注意先建立SQL文件,相当于SQl脚本,有了这个脚本语言,我们就不用每插一条记录就提供一条命令,而是可以把想插入的数据一次性的用脚本语言

16、表达出来,如下图:操作结果是Employees中插入例如所需要的数据,如图:2. 用SQL Developer图形界面的方式去插入数据这是Departments表,用图形界面的方式插入,这样做的好处是比较直观,一旦插入之后很容易修改,效率更高。3. 用PL/SQL 命令操作数据如下图:如上图,这是Salary表,看见很是繁琐,因为写完一行之后必须得执行,这样一行一行的写代码不能提高修改数据的效率,和第一种相比,感觉是差不多,总的来说命令行修改数据还是不容易,而且逻辑思维乱套的话很容易造成不必要的错误,下面看看输入这些命令后插入数据的情况,如下图:这样三个表的数据已经插入数据成功!4. 使用PL

17、/SQL命令修改表Salary中的某个记录的字段值从上图可以看出更新的数据同步在SQL Developer中也改变了。5. 使用DELETE语句删除Salary表中一行记录。从上图可以看书操作成功!6. 使用TRUNCATE TABLE语句删除Salary表中所有行。从上图中可以看出Salary 中的所有记录都被删除了。查询:1. SELECT语句的基本使用注意:由于在PL/SQL中显示的行感觉很乱,而且使用set linesize和set pagesize也起不到好的效果,所以这里就用SQL Developer中的命令行代替PL/SQL,其实效果是一样的。(1)对于实验2给出的数据库表结构,

18、查询每个雇员的所有数据。(这里指查询表Employees,表Dpartments和表Salary的查询类似)(2) 查询每个雇员的地址和电话。(3) 查询EmployeesID问000001的雇员的地址和电话。(4) 查询Employees表中所有女雇员的地址和电话,是有as子句将结果中各列的标题分别指定为地址和电话。(5) 计算给个雇员的实际收入。(6) 找出所有姓王的雇员的部门号。(7) 找出所有收入在2000元3000元之间的雇员号码。2. 子查询的使用(1) 查找财务部工作的雇员情况(2) 查找财务部年龄不低于所有研发部雇员年龄的雇员的名字。这是我自己想的查询方法,不仅用了子查询,还用

19、了把查询到的结果作为表来处理,有点而繁琐。下面根据书中提供的答案对照一下。如下图:从写的SQL语句来看,思路一致。(3) 查找比所有财务部的雇员收入都高的雇员的姓名。3. 连接查询(1) 查询每个雇员的情况及薪水的情况。(2) 查询财务部收入在2200元以上的雇员姓名及其薪水详情。4. 数据汇总(1) 求财务部雇员的平均收入用书上的方法也可得出正确结果,如下图:书上的方法采用的是子查询的方法,但是自我认为这种方法逻辑性很强,表少的话可以很容易的想到,但是当表过大的话用这种方法就显得比较繁琐,所以我觉的把所有的表整合起来查询比较好理解,而且条件也比较明了。(2) 求财务部雇员的平均实际收入。这个

20、题上上一个题没有什么区别只需要做很小的改动就OK了,如下图:(3) 求财务部雇员的总人数。5. GROUP BY 和 ORDER BY 子句的使用(1) 求各部门的雇员数。书上的SQL语句只是简单的统计了一下各部门的人数,但没有对应各个部门人数的情况,表意不明确。(2) 将各雇员的情况按收入由低到高排列在写之前先写一下思路,查询按两张表查询,然后根据题中所要求的按收入的由低到高排列,用到ORDER BY 子句,如下图:6. 使用视图(1) 创建视图限制查看雇员的某些情况。并且在SQL Developer view下也有此视图限制各部门经历只能查找本部门雇员的薪水情况,如限制财务部经理想查看自己

21、部门雇员姓名及其薪水详情。(2) 使用视图查询财务部雇员薪水情况视图也可以限制查询。查询雇员信息向表Employees 中插入一条记录通过上图可知,插入成功!将张无忌从经理办公室转到市场部把张无忌从表Employees中删除索引:1. 建立索引对YGGL数据库中Employees表的DepartmentID列建立索引。从上两个图可以看出,创建索引成功!2. 实现域完整性为YGGL数据库中的Employees表的PhoneName列建立check约束3.实现实体完整性(1)创建一个新表Departments0由上表可以看出Departments0id设为主键,并且取名为PK_Department

22、s0。(2) 为表Departments0的Departments0name列建立唯一性索引(4) 实现参照完整性在Employees表中的DepartmentID列建立外键五、讨论、心得从这节实验中我学会了用两种不同的工具插入数据,因为在前期插入数据较多所以在这里我只说在插入数据时所遇到的问题,和解决的方案,当我用SQL Developer插入数据时很不留神的就点击了提交,结果在PL/SQL上查询的时候可以查询到所需要的结果,当我用PL/SQL插入数据时在SQL Developer中却找不到想得到的结果,而在PL/SQL中却能得到结果,然后我以为是电脑出问题了,重新启动后又是同样的问题,当自

23、己要放弃的时候才想起自己在操作SQL Developer时每次都需要提交,之后我在PL/SQL键入commit后问题解决了,也许这就是这节实验最大的收获,因为自己明白了在更新数据时必须慎重,否则会出现意想不到的结果,所以Oracle才提供了提交机制,我不知道其他数据库有没有这种机制,但是很有必要!但是truncate这个命令是不需要提交的,只要在PL/SQL执行后立即生效,唉,白写了很多数据.关于后边的删除记录和更新都是一个道理,挺好的,不知不觉又明白了一个小知识点。但是,在SQL Developer中使用导入excle数据还有很多问题,解决了n长时间没有能够解决,希望在下几节实验中可以解决这

24、个问题。通过这节实验首先对我的逻辑思维是个考验,对于单表的各种查询还没问题,但对于多表查询逻辑性就相对有点儿高,但是通过不停的练习,在实验过程中基本不看答案,先写下自己的思路,然后在和书上的对照,这点在实验中可以看出,有些查询的思路基本和书上的不一致,还有一点我想说的是,这种查询的力度还远远不够,因为我涉及过将查询后的结果当成又一个表查询的,而且在条件相同的情况下,我们练习的只是一个字段相同,没有涉及到多个字段,最后我得到的一点启发是子查询在表很少的情况下用比较好,如果表较多的情况下建议不实用多级嵌套子查询,而是直接根据想等条件连接表。视图这个概念在大二学习的时候不是很清晰,但通过本次实验也是

25、颇有感想,他控制了用户对表的随意操作。本次实验我学会了如何创建索引,如何实现完整性约束,如何修改约束条件,但是还是练习的有点儿少,而且对这节实验中建立索引后所涉及的参数有的不懂,还在迷糊阶段,总的来说还需在这个环节继续投入精力才能够掌握到一定程度!教师签字:太原理工大学实验报告学院名称软件学院专业班级0000实验成绩学生姓名氣宇軒昂 学号0000000000实验日期13/13课程名称Oracle实验题目用户管理权限和显示游标实验内容及完成情况:一、实验目的和要求1、 掌握数据库的安全性能。2、 掌握使用用户实现数据库安全性。3、 掌握使用概要文件实现数据库安全性。1、了解数据库安全性管理。2、

26、了解数据库安全性包括的几个方面。3、了解使用用户实现数据库安全性的方法。4、了解使用角色实现数据库安全性的方法。5、了解使用概要文件实现数据库安全性的方法。1、了解游标的使用方法。2、熟练使用游标。二、主要仪器设备Pc电脑一台,并且安装好Oracle。三、实验内容与结果以及分析说明:这节实验用SQL/Plus来做,因为这节的实验结果数据量不大,而且提示信息简单,且运行方便。1.创建用户在YGGL数据库中创建一个用户MANAGER,授予DBA角色和SYSDBA系统权限,它可以代替system系统用户。(1)创建用户,并初始化(2) 赋予用户权限最后一个替代system系统用户不能授权,不知为何。

27、2. 创建角色在YGGL数据库中创建一个角色admin,授予dba角色和sysdba系统权限(1) 创建角色,并赋予密码(2)授权系统权限不能够授权,内置角色却可以授权。3. 创建概要文件在YGGL数据库中创建概要文件YGGLPROFILE并分配给用户manager1. 使用游标和loop循环来显示所有部门的名称;说明:如上图所示用游标打印出相关信息。2.接受用户输入的部门编号,用for循环和游标,显示此部门的所有雇员的所有信息。说明:在对话框中输入1,得到上面的结果。五、讨论、心得实验主要涉及到用户管理,或者说是系统管理,涉及到数据库的安全问题,我觉得学好管理学这个应该不是个问题,因为自我认

28、为管理方式都是实际生活中的管理方式,我觉的还是得学精这些东西吧,在学校学习的时间真的很有限,感觉只学了一点点,但是基础是根本,打好这个基础以后学什么都变的很容易了!通过这一节的实验我学会了如何使用游标,在实验过程中问题没有遇到什么,只是学会动态的输入变量的方法,总之还是得熟练!教师签字:太原理工大学实验报告学院名称软件学院专业班级0000实验成绩学生姓名氣宇軒昂 学号0000000000实验日期13/13课程名称Oracle实验题目创建存储过程和函数以及触发器实验内容及完成情况:一、实验目的和要求1、 掌握变量的分类及其使用。2、 掌握各种运算符的使用。3、 掌握各种控制语句的使用。1、了解P

29、L/SQL支持的各种基本数据类型。2、了解PL/SQL各种运算符、控制语句的功能及使用方法。3、了解系统函数的调用方法。4、了解用户自定义函数使用的一般步骤。1、了解存储过程的使用方法。2、理解数据完整性的概念及分类。3、了解触发器的类型。4、了解触发器的使用方法。二、主要仪器设备Pc电脑一台,并且安装好Oracle。三、实验内容与结果以及分析说明:由于用到课本中的几个表,所以我提前已经建立好了那几个表,并且插好了数据,可以方便使用。1.条件结构的使用(1)查询总学分大雨50的学生人数。说明:用SQL/Plus也可以得出同样的结果,但是,使用SQL Developer工具更容易操作,在者,用S

30、QL Developer是要打开输出缓冲。(2) 判断计算机系总学分大于40的人数是否超过10人。(3) 如果“数据库原理”课程的平均成绩高与75,则显示“平均成绩大于75”,否则显示“平均成绩小于75”。(4) 求X2+4X+3=0的根。这道题的目的其实实质不是要我们去了解SQL语句,反而是要我们借着这个题去熟练的掌握PL/SQL的条件控制语句,用我们初中学过的公式然后得出最后结果,而且得出的任何解都有条件制约,如下图的程序:2. 循环结构的使用(1) 求10的阶乘。(2) 用loop-exit-when-end求10的循环。(3) 用while-loop-end循环结构求10的阶乘。(4)

31、 用for-in-loop-end循环结构求10的阶乘。结果同样和上边的结果一致!3. 选择和跳转语句(1) case语句的应用。(2) 设有一表temp(xh char(6),xb char(2),xm char(8),初始化表temp。4. 自定义函数的使用(1) 定义一个函数实现如下功能。对于给定的DepartmentID值,查询该值在Departments表中是否存在。若存在返回0,否则返回-1。(2) 写一段PL/SQL脚本程序调用上述函数。当向Employees表插入一条记录时,首先调用函数check_id检索该记录的DepartmentID值在表Dpartments的Depart

32、mentid字段中是否存在对应值,若存在,则将该记录插入Employees表。1.创建触发器对于YGGL数据库,表Empolyees的DepartmentID列与表Departments的DepartmentID列盲足参照完整性规则,规则如下:l 向Employees表添加一记录时,该记录的DepartmentID值在Departments表中应存在;l 修改Departments表DepartmentID字段值时,该字段在Employees表中的对应值也应修改;l 删除Departments表中一记录时,该记录DepaetmentID字段值在Employees表中对应的记录也应该删除。对于上

33、述参照完整性规则,在此通过触发器实现。在SQL Developer编辑窗口输入各触发器的代码并执行,步骤如下:1) 向Employees表插入或修改一条记录时,通过触发器检查记录的值在Departments表是否存在,若不存在,则取消插入或修改操作。2) 修改Departments表DepartmentID字段值时,该字段在Empolyees表中的对应值也作相应的修改。3) 删除Departments表中的一条记录的同时,也删除该记录Departmentid字段值在Employees表对应的记录。如下图可知触发器创建成功,并且没有错误2.创建存储过程1) 添加职员记录的存储过程Employee

34、add。2) 修改职员记录的存储过程Employeeupdate。3) 删除职员记录的存储过程Employeedelete。如下图可知,三个过程创建成功3. 调用存储过程(1)在SQL/Plus键入EXEC employeeadd(990230,刘朝,to_date(19890909,YYYYMMDD),1, 武汉小洪山5号,null,null,3);执行:在上图中可以看出执行成功,然后再查表看是否真的插入成功,如下图:(2) 在SQL/Plus键入exec employeeupdate(990230,990230,to_date(19890909,YYYYMMDD), 武汉小洪山5号,2);

35、如下图,可以看出修改成功(3) 在SQL/Plud键入exec employeedelete(990232);从上图可以看出,执行过程成功!五、讨论、心得这一节这要学会了用PL/SQL编程,这些编程在一般程序设计语言中都会有,所以不是太难,主要有PL/SQL编程可以大大提高处理数据的灵活性,我想这节也必须得多练,在本节实验中只是涉及到较为简单的编程,而且游标这些都没有用到,但是我觉的如果编程思想不错的话学习那些应该不在话下,重点还是得熟练!通过这节实验学会了如何创建触发器,创建过程,并且通过创建的过程执行他,这节我认为主要是体现数据表的依赖关系,创建触发器就是为了确保这层依赖关系更稳定,创建过程是为了执行sql语句效率更高,在做这节实验的过程中,我更感受到作为一名程序员细心认真的重要性,因为在这过程中,由于小小的错误,导致过程执行达不到预期效果,从而一返再返,最后发现错误的时候自己却觉的很可笑,但是无心之间给了我不少经验!教师签字:

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 应用文书 > 报告/总结

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服