1、实验由本人当时亲自完成仅供参考,希望可以帮助大家实 验 报 告课程名称: 大型数据库系统 实验项目: Oracle 实用教程 实验地点: 逸夫楼 202 专业班级: 00000000 班 学号:00000000 学生姓名: 氣宇軒昂 指导教师: 2013 年 13 月 13 日太原理工大学实验报告学院名称 软件学院 专业班级 0000 实验成绩学生姓名 氣宇軒昂 学号 000000000 实验日期 13/13课程名称 Oracle 实验题目 Oracle11g 的安装与配置与创建表实验内容及完成情况:一、 实验目的和要求1、 了解数据库的结构以及一些基本概念。2、 安装 Oracle 的软件,
2、学会使用大型数据库的软件3、 了解表的结构特点。4、 了解 Oracle 的基本数据类型。5、 学会使用 DBCA 创建数据库。6、 学会使用界面方式创建表。7、 学会使用 SQL 语句手工创建数据库。8、 学会使用 SQL 语句创建表。1、首先要明确,能够创建数据库的用户必须是系统管理员,或是被授使用 CREATE DATABASE 语句的用户。2、其次创建数据库必须要确定数据库名、所有者(及创建数据库的用户) 、数据库大小、SGA 分配和存储数据库文件。3、然后,确定数据库包含哪些表以及所包含的各表的结构,还要了解 Oracle11g 的常用数据类型,以创建数据库的表。4、此外还要了解两种
3、常用的数据库、表的方法,即利用 DBCA 创建和使用 PL/SQL的 CREATE DATABASE 语句创建。二、实验内容和原理创建企业管理的员工管理数据库 YGGL,包含 Employees(员工自然信息)表、Departments(部门信息)表和 Salary(员工薪水情况)表。各表的结构如下图所示。表 T1.1 Employees 表结构列名 数据类型 长度 是否允许为空 说明Employees Char 6 员工编号,主键Name Char 10 姓名Birthday Date 出生日期Sex Number 1 性别Address Char 20 地址Zip Char 6 邮编Pho
4、neNumber Char 12 电话号码DpartmentID Char 3 员工部门号,外键表 T1.2 Departments 表结构列名 数据类型 长度 是否允许为空 说明DepartmentID Char 3 部门编号,主键DepartmentName Char 20 部门名Note Varchar2 100 备注表 T1.3 Salary 表结构列名 数据类型 长度 是否允许为空 说明EmployeesID Char 6 员工编号,主键InCome Number 8,2 收入Outcome Numer 8,2 支出三、主要仪器设备Pc 电脑一台,并且安装好 Oracle。4、实验结
5、果与分析1.数据库的安装配置安装的过程:图 1.1 安装 1图 1.2 安装 2 图 1.3 安装 3图 1.4 安装 4图 1.5 安装 5安装好后的界面OEM 的界面:图 1.6 oem 的登录界面图 1.7 打开后的 oemSqlDeveloper 的界面:2.利用 DBCA 创建数据库以下提示信息说明数据库 YYGL 创建成功。3.在 OEM 中分别创建表启动数据库 YYGL 的 OEM 页面,使用 SYSTEM 用户登录,在 “方案”属性页中选择“表” ,单击鼠标左键,再出现的“表搜索”页面上单击“创建”按钮,进入“创建表”页面,在该页面的各个选项卡上输入表 Employees 各个
6、字段信息、约束条件、分区和存储情况等设置,单击“确定”按钮即可完成创建,Department 和 Salary 的创建与上相同。如上就是创建表的页面,当出现下图时,表示,创建成功。如上图,表示 Emploryees 创建成功。Departmens 和 Sarary 的创建与 Emploryees 相同。4.在 OEM 中删除已创建的表点击“使用选项删除”出现下图:选择第一项,并且选中删除所有引用完整性约束条件,就可以彻底删除表。下面就用另一种工具 SQL Developer 去实现表的创建和删除!3.在 SQL Developer 中创建表(1)应该创建一个连接,也就是说用 SQL Devel
7、oper 连接到 YGGL 数据库,连接成功后会提示连接成功,并且可以出现 yggl_ora 连接 YGGL 的所有列表,如图:(2)展开 yggl_ora 连接,右击“Table”节点选择“New Table”菜单项,在“Create Table”窗口中输入表名 Emploryees,选中 “Adcanced”复选框,设置表 Emploryees 的各个列及约束条件,单击“确定”按钮完成表 Emploryees。完成好表的创建后,列表中就会有 Emploryees 的相应信息,如下图:表 Departments 和表 Salary 的创建与创建表 Emploryees 相同。4.使用 SQL
8、 Developer 删除表展开“Table”节点,找到表 Emploryees,右击鼠标,选择 “Table”菜单项下的“Drop”子菜单项,在弹出的确认对话框中单击“应用”按钮即可删除 Emploryees 表。如上图,点击“应用”后再“确定”就完成删除了!5.使用 PL/SQL 语句创建表打开 SQL/Plus,连接到 system,然后键入相应的创建表语句即可,如下图:如上图所示,三个表都创建成功了,用 PL/SQL 删除表的操作是 DROP TABLE table_name,在这里就不演示了,因为现在创建的表为下次实验使用。五、讨论、心得通过这一节的实验首先我学会了如何安装 Orac
9、le,安装后由于 Oracle 占用内存很大,所以还学会了启动 Oracle 所需要启动的服务,这样在不用 Oracle的时候可以节省内存,提高计算机运行速率,再者就是学会了用 Oracle 提供的DBCA 创建数据库,最后学会的是用三种工具如何创建和删除一张表,其中我认为虽然 SQL Developer 使用起来更方便,更高效,但是对于软件专业的我们必须熟练用 SQL/Plus 去执行各种命令,有时图形界面所提供的功能是很有限的,而且如果想要提高数据库的效率,有时在管理中为了不占用大量内存,只提供控制台的方式去管理数据库。教师签字:太原理工大学实验报告学院名称 软件学院 专业班级 0000
10、实验成绩学生姓名 氣宇軒昂 学号 000000000 实验日期 13/13课程名称 Oracle 实验题目 表的修改查询,视图操作,索引实验内容及完成情况:一、实验目的和要求1、 学会使用 PL/SQL 语句对数据库表进行插入、修改和删除数据的操作。2、 学会使用 SQL/Developer 对数据库表进行插入、修改和删除数据的操作。3、 了解数据更新操作时要注意数据完整性。4、 了解 PL/SQL 语句对表数据操作的灵活控制功能。1、 掌握 SELECT 语句的基本语法。2、 掌握子查询的表示方法。3、 掌握链接查询的表示方法。4、 掌握数据汇总的方法。5、 掌握 SELECT 语句的 GR
11、OUP BY 子句的作用和使用方法。6、 掌握 SELECT 语句的 ORDER BY 子句的作用和使用方法。7、 掌握视图的使用方法。1、了解 SELECT 语句的基本语法格式和执行方法。2、了解子查询的表示方法、连接查询和数据汇总的方法。3、了解 SELECT 语句的 GROUP BY 子句的作用和使用方法。4、了解 SELECT 语句的 ORDER BY 子句的作用。5、了解视图的作用和创建视图的方法。6、了解视图的使用方法。1、首先了解对表数据的插入、删除、修改都属于表数据的更新操作。对表数据的操作可以在 SQL Developer 中进行,也可以有 PL/SQL 语句实现。2、其次要
12、掌握 PL/SQL 中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE、DELETE(或 TRANCATE TABLE) 。3、要特别注意在执行插入、删除、修改等数据更新操作时,必须保证数据完整性。4、此外,还要了解使用 PL/SQL 语句对表数据进行插入、修改及删除时,比在 SQL Developer 中操作表数据更灵活,功能更强大。二、实验内容和原理分别使用 SQL Deveploper 和 PL/SQL 语句,在实验 1 建立的数据库 YGGL 的三个表Employees、Departments 和 Salary 中分别插入多行数据记录,然后修改和删除一些记录。使用
13、 PL/SQL 进行有限的修改和删除。在实验 1 中,用于实验的 YGGL 数据库中的三个表已经建立,现在要讲各表的样本数据添加到表中。样本数据如表 T2.1、表 T2.2 和表 T2.3 所示。表 T2.1 Employees 表数据样本编号 姓名 出生日期 性别 住址 邮编 电话号码 部门号000001 王林 1966-01-23 1 中山路 32-1-508 210003 83355668 2010008 伍容华 1976-03-28 1 北京东路 100-2 210001 83321321 1020010 王向容 1982-12-09 1 四牌楼 10-0-108 210006 837
14、92361 1020018 李丽 1960-07-30 0 中山东路 102-2 210002 83413301 1102201 刘明 1972-10-18 1 虎距路 100-2 210003 83606608 5102208 朱俊 1965-09-28 1 牌楼巷 5-3-106 210004 84708817 5108991 钟敏 1979-08-10 0 中山路 10-3-106 210003 83346722 3111006 张石兵 1974-10-01 1 解放路 34-1-203 210010 84563418 5210678 林涛 1977-04-02 1 中山北路 24-35
15、 210008 83467336 3302566 李玉珉 1968-09-20 1 热河路 209-3 210001 58765991 4308759 叶凡 1978-11-18 1 北京西路 3-7-52 210002 83308901 4504209 陈琳琳 1969-09-03 0 汉中路 120-4-12 210018 84468158 4表 T2.2 Departments 表数据样本部门号 部门名称 备注 部门号 部门名称 备注1 财务部 NULL 4 研发部 NULL2 人力资源部 NULL 5 市场部 NULL3 经理办公室 NULL表 T2.3 Salary 表数据样本编号
16、收入 支出 编号 收入 支出000001 2100.8 123.09 108991 3259.98 281.52010008 1582.62 88.03 020010 2860.0 198.0102201 2569.88 185.65 308759 2347.68 180.0111006 1987.01 79.58 308759 2531.98 199.08504209 2066.15 108.0 210678 2240.0 121.0302566 2980.7 210.2 102208 1980.0 100.0三、主要仪器设备Pc 电脑一台,并且安装好 Oracle。四、实验结果与分析1.使
17、用 SQL Developer 操作数据用命令行的方式在 Employees 中插入数据,要注意先建立 SQL 文件,相当于 SQl 脚本,有了这个脚本语言,我们就不用每插一条记录就提供一条命令,而是可以把想插入的数据一次性的用脚本语言表达出来,如下图:操作结果是 Employees 中插入例如所需要的数据,如图:2.用 SQL Developer 图形界面的方式去插入数据这是 Departments 表,用图形界面的方式插入,这样做的好处是比较直观,一旦插入之后很容易修改,效率更高。3.用 PL/SQL 命令操作数据如下图:如上图,这是 Salary 表,看见很是繁琐,因为写完一行之后必须得
18、执行,这样一行一行的写代码不能提高修改数据的效率,和第一种相比,感觉是差不多,总的来说命令行修改数据还是不容易,而且逻辑思维乱套的话很容易造成不必要的错误,下面看看输入这些命令后插入数据的情况,如下图:这样三个表的数据已经插入数据成功!4.使用 PL/SQL 命令修改表 Salary 中的某个记录的字段值从上图可以看出更新的数据同步在 SQL Developer 中也改变了。5.使用 DELETE 语句删除 Salary 表中一行记录。从上图可以看书操作成功!6.使用 TRUNCATE TABLE 语句删除 Salary 表中所有行。从上图中可以看出 Salary 中的所有记录都被删除了。查询
19、:1.SELECT 语句的基本使用注意:由于在 PL/SQL 中显示的行感觉很乱,而且使用 set linesize 和 set pagesize 也起不到好的效果,所以这里就用 SQL Developer 中的命令行代替 PL/SQL,其实效果是一样的。(1)对于实验 2 给出的数据库表结构,查询每个雇员的所有数据。(这里指查询表 Employees,表 Dpartments 和表 Salary 的查询类似)(2)查询每个雇员的地址和电话。(3)查询 EmployeesID 问 000001 的雇员的地址和电话。(4)查询 Employees 表中所有女雇员的地址和电话,是有 as 子句将结
20、果中各列的标题分别指定为地址和电话。(5)计算给个雇员的实际收入。(6)找出所有姓王的雇员的部门号。(7)找出所有收入在 2000 元3000 元之间的雇员号码。2.子查询的使用(1)查找财务部工作的雇员情况(2)查找财务部年龄不低于所有研发部雇员年龄的雇员的名字。这是我自己想的查询方法,不仅用了子查询,还用了把查询到的结果作为表来处理,有点而繁琐。下面根据书中提供的答案对照一下。如下图:从写的 SQL 语句来看,思路一致。(3)查找比所有财务部的雇员收入都高的雇员的姓名。3.连接查询(1)查询每个雇员的情况及薪水的情况。(2)查询财务部收入在 2200 元以上的雇员姓名及其薪水详情。4.数据
21、汇总(1)求财务部雇员的平均收入用书上的方法也可得出正确结果,如下图:书上的方法采用的是子查询的方法,但是自我认为这种方法逻辑性很强,表少的话可以很容易的想到,但是当表过大的话用这种方法就显得比较繁琐,所以我觉的把所有的表整合起来查询比较好理解,而且条件也比较明了。(2)求财务部雇员的平均实际收入。这个题上上一个题没有什么区别只需要做很小的改动就 OK 了,如下图:(3)求财务部雇员的总人数。5.GROUP BY 和 ORDER BY 子句的使用(1)求各部门的雇员数。书上的 SQL 语句只是简单的统计了一下各部门的人数,但没有对应各个部门人数的情况,表意不明确。(2)将各雇员的情况按收入由低
22、到高排列在写之前先写一下思路,查询按两张表查询,然后根据题中所要求的按收入的由低到高排列,用到 ORDER BY 子句,如下图:6.使用视图(1)创建视图限制查看雇员的某些情况。 1并且在 SQL Developer view 下也有此视图限制各部门经历只能查找本部门雇员的薪水情况,如限制财务部经理想查看自己部门雇 2员姓名及其薪水详情。(2)使用视图查询财务部雇员薪水情况 1视图也可以限制查询。查询雇员信息 2向表 Employees 中插入一条记录 3通过上图可知,插入成功!将张无忌从经理办公室转到市场部 4把张无忌从表 Employees 中删除 5索引:1.建立索引对 YGGL 数据库
23、中 Employees 表的 DepartmentID 列建立索引。从上两个图可以看出,创建索引成功!2.实现域完整性为 YGGL 数据库中的 Employees 表的 PhoneName 列建立 check 约束3.实现实体完整性(1)创建一个新表 Departments0由上表可以看出 Departments0id 设为主键,并且取名为 PK_Departments0。(2)为表 Departments0 的 Departments0name 列建立唯一性索引(4)实现参照完整性在 Employees 表中的 DepartmentID 列建立外键五、讨论、心得从这节实验中我学会了用两种不同
24、的工具插入数据,因为在前期插入数据较多所以在这里我只说在插入数据时所遇到的问题,和解决的方案,当我用SQL Developer 插入数据时很不留神的就点击了提交,结果在 PL/SQL 上查询的时候可以查询到所需要的结果,当我用 PL/SQL 插入数据时在 SQL Developer 中却找不到想得到的结果,而在 PL/SQL 中却能得到结果,然后我以为是电脑出问题了,重新启动后又是同样的问题,当自己要放弃的时候才想起自己在操作 SQL Developer 时每次都需要提交,之后我在 PL/SQL 键入commit 后问题解决了,也许这就是这节实验最大的收获,因为自己明白了在更新数据时必须慎重,否则会出现意想不到的结果,所以 Oracle 才提供了提交机制,我不知道其他数据库有没有这种机制,但是很有必要!但是 truncate 这个命令是不需要提交的,只要在 PL/SQL 执行后立即生效,唉,白写了很多数据.关于后边的删除记录和更新都是一个道理,挺好的,不知不觉又明白了一个小知识点。但是,在 SQL Developer 中使用导入 excle 数据还有很多问题,解