太原理工大学 oracle 大型数据库实验报告Word格式文档下载.docx
《太原理工大学 oracle 大型数据库实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《太原理工大学 oracle 大型数据库实验报告Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
![太原理工大学 oracle 大型数据库实验报告Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-11/20/86433a2a-9bbe-4d33-a5db-805576d2fc12/86433a2a-9bbe-4d33-a5db-805576d2fc121.gif)
姓名
Birthday
Date
出生日期
Sex
Number
1
性别
Address
20
√
地址
Zip
邮编
PhoneNumber
12
电话号码
Department
3
员工部门号、外键
表T1.2Departments表结构
DepartmentID
部门编号、主键
DepartmentName
部门号
Note
Varchar2
100
备注
表T1.3Salary表结构
EmplyeeID
员工编号、主键
InCome
8,2
收入
OutCome
支出
三、主要仪器设备
WindowsXP/7、oracle10g/11g
四、操作方法与实验步骤
1.利用DBCA创建数据库
1)数据库名称为YGGL,它的全局数据库名称为YGGL。
2)控制文件三个,存放路径为……………………,名称分别为CONTROL01.CR、CONTROL02.CR和CONTROL03.CR。
3)重做日志文件三个,大小为100MB,存放路径为:
………………,名称分别为redo01.log、redo02.log和redo03.log。
4)创建临时表空间temp01.dpf。
5)数字字符集为ZHS16GBK,国家字符集为AL16UTF16。
6)数据块大小为4KB。
进入DBCA,根据其提示逐步完成数据库的创建工作。
实际情况,我以创建表空间代替。
2.利用DBCA删除数据库(实际不操作)
3.在OEM和利用sql语句分别创建表
下面列出建表语句:
/**
创建Departments表
*/
createtableDepartments(
department_idchar(3),
department_namevarchar2(20)notnull,
notevarchar2(100),
constraintdepartments_pkprimarykey(department_id)
)
tablespaceyggl;
创建Salary表
createtableSalary(
employee_idchar(6),
incomenumber(8,2)notnull,
outcomenumber(8,2)notnull,
constraintSalary_pkprimarykey(employee_id),
constraintemployee_id_foreign_key
foreignkey(employee_id)referencesemployees(employee_id)
五、实验结果与分析
创建表空间:
以下为创建表,因为自己的命名习惯,对其中部分名称进行了修正,另外,一些数据的数据类型该用更合适的数据类型。
创建employees表:
利用sql语句建表也全部成功。
六、讨论、心得(可选)
本次试验考察内容基本为数据定义语言,有数据库的创建(因为以前已建过了,所以这次我用名称空间代替),表的创建(图形化操作与sql语句操作)。
差不多就这样子,通过这次试验大概可以掌握oracle数据库的基本操作,主要有助于对其环境的熟悉。
大型数据库系统
表数据插入、修改和删除
多学科楼4506
20090
2012年4月19日
1.学会使用PL/SQL语句对数据库表进行插入、修改和删除数据操作。
2.学会使用SQLDeveloper对数据库表进行插入、修改和删除数据的操作。
3.了解数据更新操作时要注意数据完整性。
4.了解PL/SQL语句对表数据操作的灵活控制功能。
1.了解对表数据的插入、删除、修改都属于表数据的更新操作。
对表数据的操作可以在SQLDeveloper中进行,也可以由PL/SQL语句实现。
2.掌握PL/SQL语句中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE和DELETE(或TRANCATETABLE)。
3.在执行插入、删除、修改等数据更新操作时,必须保证数据的完整性。
4.使用PL/SQL语句在对表数据进行插入、修改及删除时,比在OEM中操作表数据更为灵活,功能更强大。
在实验1中,用于实验的YGGL数据库中的三个表已经建立,现在要将各表的样本数据添加到表中。
样本数据如表T2.1、表T2.2和表T2.3所示。
表T2.1Employees表数据样本
编号
住址
000001
王林
1966-01-23
中山路32-1-508
210003
83355668
2
010008
伍容华
1976-03-28
北京东路100-2
210001
83321321
表T2.2Departments表数据样本
部门名称
财务部
NULL
4
研发部
人力资源部
5
市场部
经理办公室
表T2.3Salary表数据样本
2100.8
123.09
108991
3259.98
281.52
1582.62
88.03
020010
2860.0
198.0
102201
2568.88
185.65
020018
2347.68
180.0
WINDOWSXP/WINDOWS7
Oracle10g/11g
分别使用SQLDeveloper和PL/SQL语句,在实验1建立的数据库YGGL的表Employees、表Departments和表Salary中插入多行数据记录,然后修改和删除一些记录。
使用PL/SQL命令进行有限制的修改和删除。
(一)使用SQLDeveloper操作数据
启动SQLDeveloper,展开yggl_ora连接,单击”Employees”表,在左边窗口中选择”Data”选项卡。
在此窗口中,单击”Insertrow”按钮,表中将增加一个新行,在新行中双击一列空白处后输入新数据,输完后单击”CommitChanges”按钮,将数据保存到数据库中。
修改数据的方法和添加数据类似,如果要删除一行数据,选中该行数据,单击”DeleteSelectedRow(s)”按钮,之后该行的行号前会显示一个“——”号,删除后单击”CommitChanges”按钮保存。
(二)使用PL/SQL命令操作数据
1.使用PL/SQL语句分别向YGGL数据库的表Employees、表Departments和表Salary中插入插入一行记录。
在启动SQL*Plus窗口或SQLDeveloper的代码编辑窗口中,输入以下PL/SQL语句并执行:
一下为对3个表的数据的所有插入语句:
向DEPARTMENTS表中插入数据样本
insertintoDEPARTMENTS
values('
001'
'
财务部'
null);
002'
人力资源部'
INSERTINTODepartments
VALUES('
003'
'
经理办公室'
NULL);
004'
研发部'
005'
市场部'
commit;
向employee表中插入数据样本
insertintoemployees
000001'
王林'
to_date('
1966-01-23'
YYYY-MM-DD'
),1,
'
中山路32-1-508'
210003'
83355668'
);
INSERTINTOEmployees
010008'
伍容华'
TO_DATE('
19760328'
YYYYMMDD'
),1,
北京东路100-2'
210001'
83321321'
020010'
王向荣'
1982-12-19'
四牌楼10-0-108'
210006'
83792361'
020018'
李丽'
19600723'
),0,
中山东路102-2'
210002'
83413301'
102201'
刘明'
19721018'
虎距路100-2'
210013'
83606608'
102208'
朱俊'
19650928'
牌楼巷5-3-106'
210004'
84708817'
INSERTINToEmployees
108991'
钟敏'
19790810'
中山路10-3-105'
83346722'
111006'
张石兵'
19741001'
解放路34-1-203'
210010'
84563418'
210678'
林涛'
19770402'
中山北路24-35'
210008'
83467336'
VaLUES('
302566'
李玉珉'
19680920'
热和路209-3'
58765991'
308759'
叶凡'
19781118'
北京西路3-7-52'
83308901'
504209'
陈琳琳'
19690903'
汉中路120-4-12'
210018'
84468158'
向Salary表中插入数据样本
insertintoSalary
2100.8,123.09);
INSERTINTOSalary
1582.62,88.03);
2569.88,185.65);
1987.01,79.58);
2066.15,108.0);
2980.7,210.2);
3259.98,281.52);
2860.0,198.0);
2347.68,180.0);
2531.98,199.08);
2240.0,121.0);
1980.0,100.0);
2.使用PL/SQL命令修改表Salary中的某个记录的字段值。
语句:
updateSALARY表
**/
UPDATESALARY
SETINCOME=2890
WHEREEMPLOYEE_ID='
;
COMMIT;
按回车键,执行上述语句,将编号为000001的职工收入改为2890.在OEM中打开YGGL数据库的Salary表,观察数据变化。
3.使用PL/SQL语句修改表Salary中的所有记录的字段值。
在SQL*Plus界面中输入以下PL/SQL语句:
语句
*将其所有行的IMCOME加100
SETINCOME=INCOME+100;
按回车键,执行上述语句,将所有职工的收入增加100。
可见,使用PL/SQL语句操作表数据比在SQLDeveloper中操作表数据更为灵活。
输入以下PL/SQL语句,观察数据变化。
SELECT*FROMSalary;
4.使用DELETE语句删除Salary表中一行记录。
*删除salary表中的一行记录
DELETEFROMSALARY
WHEREemployee_id='
5.使用TRANCATETABLE语句删除表中所有行。
*清空表
deletefromSalary;
deletefromemployees;
deletefromdepartments;
TRUNCATETABLESALARY;
按上述过程操作,试验结果均满足预期要求。
本次试验主要考察对表的数据的基本更新操作,即dml语言。
通过对表的增删改操作熟悉对应的sql语句以及OEM操作。
大型数据库系统
数据库的查询和视图
多学科楼506
200900
2012年4月21日
1、掌握SELECT语句的基本语法
2、掌握子查询的表示方法
3、掌握连接查询的表示方法
4、掌握数据汇总的方法
5、掌握SELECT语句的GROUPBY子句的作用和使用方法
6、掌握SELECT语句的ORDERBY子句的作用和使用方法
7、掌握视图的使用方法
二、实验内容
1.了解SELECT语句的基本语法格式和执行方法
2.了解子查询的表示方法、连接查询和数据汇总的方法
3.了解SELECT语句的GROUPBY子句的作用和使用方法
4.了解SELECT语句的ORDERBY子句的作用
5.了解视图的作用和创建方法
6.了解视图的使用方法
三、实验环境与设备
Win7、Oracle11g
1、SELECT语句的基本使用
(1)对于实验2给出的数据库表结构,查询每个雇员的所有数据
在SQL*Plus窗口或SQLDeveloper中输入语句并执行
SELECT*FROMEmployees;
SELECT*FROMDepartments;
SELECT*FROMSalary;
(2)查询每个雇员的地址和电话
/**
*查询每个雇员的地址和电话
SELECTADDRESS,PHONE_NUMBER
FROMEMPLOYEES;
(3)查询EmployeeID为000001的雇员的地址和电话
SELECTAddress,PhoneNumber
FROMEmployees
WHEREEmployee_ID='
(4)查询Employees表中所有女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址和电话
SELECTAddressAS地址,PhoneNumberAS电话
WHEREsex=0;
*查询每个女性雇员的地址和电话,并对列名重新命名
SELECTADDRESSas地址,PHONE_NUMBER电话
FROMEMPLOYEES
WHERESEX='
0'
(5)计算ID号以10开头的雇员的实际收入
*计算ID号以10开头的雇员的实际收入
SELECTemployee_id,INCOME-OUTCOMEAS实际收入
FROMSALARY
WHEREEMPLOYEE_IDLIKE'
10%'
2、子查询的使用
(1)查找在财务部工作的雇员的情况
SELECT*FROMEMPLOYEES
WHEREDepartment_ID=
(
SELECTDepartment_ID
FROMDepartments
WHEREDepartmentName='
(2)查询财务部年龄不低于所有研发部雇员年龄的雇员的姓名
*查找财务部年龄不低于所有研发部雇员年龄的雇员的姓名
WHEREdepartment_idIN(
SELECTDEPARTMENT_IDFROMdepartments
WHEREdepartment_name='
)
AND
birthday<
=ALL(
SELECTBIRTHDAYFROMEMPLOYEES
WHEREDEPARTMENT_IDIN(
);
(3)查找比所有财务部的雇员收入都搞得雇员的姓名
*查找比所有财务部的雇员收入都要高的雇员的姓名
SELECTNAMEFROMEMPLOYEES
WHEREEMPLOYEE_idIN(
SELECTEMPLOYEE_IDFROMSALARY
WHEREINCOME>
SELECTINCOMEFROMSALARY
WHEREEMPLOYEE_IDIN(
SELECTEMPLOYEE_IDFROMEMPLOYEES
WHEREDEPARTMENT_ID=(
SELECTDEPARTMENT_IDFROMDEPARTMENTS
WHEREDEPARTMENT_NAME='
3、连接查询的使用
(1)查询每个雇员的情况以及其薪水的情况
SELECTEmployees.*,Salary.*
FROMEmployees,Salary
WHEREEmployees.Employee_ID=Salary.Employee_ID;
(2)查找财务部收入在2200元以上的雇员的姓名及其薪水详情
/**
*查找财务部收入在2200元以上的雇员姓名及其薪水详情
SELECTname,INCOME,OUTCOME
FROMEMPLOYEES,SALARY,DEPARTMENTS
WHEREemployees.employee_id=salary.employee_id
emp