太原理工大学oracle大型数据库实验报告.docx
- 文档编号:28164776
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:35
- 大小:26.30KB
太原理工大学oracle大型数据库实验报告.docx
《太原理工大学oracle大型数据库实验报告.docx》由会员分享,可在线阅读,更多相关《太原理工大学oracle大型数据库实验报告.docx(35页珍藏版)》请在冰豆网上搜索。
太原理工大学oracle大型数据库实验报告
本科实验报告
课程名称:
大型数据库系统
实验项目:
创建数据库和表
实验地点:
多学科楼4506
专业班级:
软件工程0901学号:
200
学生姓名:
指导教师:
2012年4月17日
一、实验目的和要求
1.了解数据库的结构以及一些基本概念。
2.了解表的结构特点。
3.了解Oracle11g的基本数据类型。
4.学会使用DBCA创建数据库。
5.学会使用界面方式创建表。
6.学会使用SQL语句手工创建数据库。
7.学会使用SQL语句创建表。
二、实验内容和原理
1.能够创建数据库的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。
2.创建数据库必须要确定数据库名、所有者(即创建数据库的用户)、数据库大小、SGA分配和存储数据库的文件。
3.确定数据库包含哪些表以及所包含的各表的结构,还要了解Oracle11g的常用数据类型,以创建数据库的表。
4.创建企业管理的员工管理数据库YGGL,包含Employees(员工自然信息)表、Departments(部门信息)表和Salary(员工薪水情况)表。
各表的结构如下所示。
表Employees表结构
列名
数据类型
长度
是否允许为空值
说明
EmployeeID
Char
6
×
员工编号,主键
Name
Char
10
×
姓名
Birthday
Date
×
出生日期
Sex
Number
1
×
性别
Address
Char
20
√
地址
Zip
Char
6
√
邮编
PhoneNumber
Char
12
√
电话号码
Department
Char
3
×
员工部门号、外键
表Departments表结构
列名
数据类型
长度
是否允许为空值
说明
DepartmentID
Char
3
×
部门编号、主键
DepartmentName
Char
20
×
部门号
Note
Varchar2
100
√
备注
表Salary表结构
列名
数据类型
长度
是否允许为空值
说明
EmplyeeID
Char
6
×
员工编号、主键
InCome
Number
8,2
×
收入
OutCome
Number
8,2
×
支出
三、主要仪器设备
WindowsXP/7、oracle10g/11g
四、操作方法与实验步骤
1.利用DBCA创建数据库
1)数据库名称为YGGL,它的全局数据库名称为YGGL。
2)控制文件三个,存放路径为……………………,名称分别为、和。
3)重做日志文件三个,大小为100MB,存放路径为:
………………,名称分别为、和。
4)创建临时表空间。
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)
)
tablespaceyggl;
五、实验结果与分析
创建表空间:
以下为创建表,因为自己的命名习惯,对其中部分名称进行了修正,另外,一些数据的数据类型该用更合适的数据类型。
创建employees表:
利用sql语句建表也全部成功。
六、讨论、心得(可选)
本次试验考察内容基本为数据定义语言,有数据库的创建(因为以前已建过了,所以这次我用名称空间代替),表的创建(图形化操作与sql语句操作)。
差不多就这样子,通过这次试验大概可以掌握oracle数据库的基本操作,主要有助于对其环境的熟悉。
本科实验报告
课程名称:
大型数据库系统
实验项目:
表数据插入、修改和删除
实验地点:
多学科楼4506
专业班级:
软件工程0901学号:
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数据库中的三个表已经建立,现在要将各表的样本数据添加到表中。
样本数据如表、表和表所示。
表Employees表数据样本
编号
姓名
出生日期
性别
住址
邮编
电话号码
部门号
000001
王林
1966-01-23
1
中山路32-1-508
210003
2
010008
伍容华
1976-03-28
1
北京东路100-2
210001
1
表Departments表数据样本
部门号
部门名称
备注
部门号
部门名称
备注
1
财务部
NULL
4
研发部
NULL
2
人力资源部
NULL
5
市场部
NULL
3
经理办公室
NULL
表Salary表数据样本
编号
收入
支出
编号
收入
支出
000001
108991
010008
020010
102201
020018
三、主要仪器设备
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);
insertintoDEPARTMENTS
values('002','人力资源部',null);
INSERTINTODepartments
VALUES('003','经理办公室',NULL);
INSERTINTODepartments
VALUES('004','研发部',NULL);
INSERTINTODepartments
VALUES('005','市场部',NULL);
commit;
/**
向employee表中插入数据样本
*/
insertintoemployees
values('000001','王林',to_date('1966-01-23','YYYY-MM-DD'),1,
'中山路32-1-508','210003','','002');
INSERTINTOEmployees
VALUES('010008','伍容华',TO_DATE('','YYYYMMDD'),1,
'北京东路100-2','210001','','001');
insertintoemployees
values('020010','王向荣',to_date('1982-12-19','YYYY-MM-DD'),1,
'四牌楼10-0-108','210006','','001');
INSERTINTOEmployees
VALUES('020018','李丽',TO_DATE('','YYYYMMDD'),0,
'中山东路102-2','210002','','001');
INSERTINTOEmployees
VALUES('102201','刘明',TO_DATE('','YYYYMMDD'),1,
'虎距路100-2','210013','','005');
INSERTINTOEmployees
VALUES('102208','朱俊',TO_DATE('','YYYYMMDD'),1,
'牌楼巷5-3-106','210004','','005');
INSERTINToEmployees
VALUES('108991','钟敏',TO_DATE('','YYYYMMDD'),0,
'中山路10-3-105','210003','','003');
INSERTINTOEmployees
VALUES('111006','张石兵',TO_DATE('','YYYYMMDD'),1,
'解放路34-1-203','210010','','005');
INSERTINTOEmployees
VALUES('210678','林涛',TO_DATE('','YYYYMMDD'),1,
'中山北路24-35','210008','','003');
INSERTINToEmployees
VaLUES('302566','李玉珉',TO_DATE('','YYYYMMDD'),1,
'热和路209-3','210001','','004');
INSERTINTOEmployees
VALUES('308759','叶凡',TO_DATE('','YYYYMMDD'),1,
'北京西路3-7-52','210002','','004');
INSERTINTOEmployees
VALUES('504209','陈琳琳',TO_DATE('','YYYYMMDD'),0,
'汉中路120-4-12','210018','','004');
commit;
/**
向Salary表中插入数据样本
*/
insertintoSalary
values('000001',,;
INSERTINTOSalary
VALUES('010008',,;
INSERTINTOSalary
VALUES('102201',,;
INSERTINTOSalary
VALUES('111006',,;
INSERTINTOSalary
VALUES('504209',,;
INSERTINTOSalary
VALUES('302566',,;
INSERTINTOSalary
VALUES('108991',,;
INSERTINTOSalary
VALUES('020010',,;
INSERTINTOSalary
VALUES('020018',,;
INSERTINTOSalary
VALUES('308759',,;
INSERTINTOSalary
VALUES('210678',,;
INSERTINTOSalary
VALUES('102208',,;
commit;
2.使用PL/SQL命令修改表Salary中的某个记录的字段值。
语句:
/**
updateSALARY表
**/
UPDATESALARY
SETINCOME=2890
WHEREEMPLOYEE_ID='000001';
COMMIT;
按回车键,执行上述语句,将编号为000001的职工收入改为2890.在OEM中打开YGGL数据库的Salary表,观察数据变化。
3.使用PL/SQL语句修改表Salary中的所有记录的字段值。
在SQL*Plus界面中输入以下PL/SQL语句:
语句
/**
*将其所有行的IMCOME加100
**/
UPDATESALARY
SETINCOME=INCOME+100;
COMMIT;
按回车键,执行上述语句,将所有职工的收入增加100。
可见,使用PL/SQL语句操作表数据比在SQLDeveloper中操作表数据更为灵活。
输入以下PL/SQL语句,观察数据变化。
SELECT*FROMSalary;
4.使用DELETE语句删除Salary表中一行记录。
/**
*删除salary表中的一行记录
**/
DELETEFROMSALARY
WHEREemployee_id='010008';
COMMIT;
5.使用TRANCATETABLE语句删除表中所有行。
在SQL*Plus界面中输入以下PL/SQL语句:
/**
*清空表
**/
deletefromSalary;
deletefromemployees;
deletefromdepartments;
TRUNCATETABLESALARY;
五、实验结果与分析
按上述过程操作,试验结果均满足预期要求。
六、讨论、心得(可选)
本次试验主要考察对表的数据的基本更新操作,即dml语言。
通过对表的增删改操作熟悉对应的sql语句以及OEM操作。
本科实验报告
课程名称:
大型数据库系统
实验项目:
数据库的查询和视图
实验地点:
多学科楼506
专业班级:
软件工程0901学号:
200900
学生姓名:
指导教师:
2012年4月21日
1、实验目的和要求
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='000001';
(4)查询Employees表中所有女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址和电话
SELECTAddressAS地址,PhoneNumberAS电话
FROMEmployees
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)查询财务部年龄不低于所有研发部雇员年龄的雇员的姓名
/**
*查找财务部年龄不低于所有研发部雇员年龄的雇员的姓名
**/
SELECT*FROMEMPLOYEES
WHEREdepartment_idIN(
SELECTDEPARTMENT_IDFROMdepartments
WHEREdepartment_name='财务部'
)
AND
birthday<=ALL(
SELECTBIRTHDAYFROMEMPLOYEES
WHEREDEPARTMENT_IDIN(
SELECTDEPARTMENT_IDFROMdepartments
WHEREdepartment_name='研发部'
)
);
(3)查找比所有财务部的雇员收入都搞得雇员的姓名
/**
*查找比所有财务部的雇员收入都要高的雇员的姓名
**/
SELECTNAMEFROMEMPLOYEES
WHEREEMPLOYEE_idIN(
SELECTEMPLOYEE_IDFROMSALARY
WHEREINCOME>=ALL(
SELECTINCOMEFROMSALARY
WHEREEMPLOYEE_IDIN(
SELECTEMPLOYEE_IDFROMEMPLOYEES
WHEREDEPARTMENT_ID=(
SELECTDEPARTMENT_IDFROMDEPARTMENTS
WHEREDEPARTMENT_NAME='财务部'
)
)
)
)
3、连接查询的使用
(1)查询每个雇员的情况以及其薪水的情况
SELECTEmployees.*,Salary.*
FROMEmployees,Salary
WHERE=;
(2)查找财务部收入在2200元以上的雇员的姓名及其薪水详情
/**
*查找财务部收入在2200元以上的雇员姓名及其薪水详情
**/
SELECTname,INCOME,OUTCOME
FROMEMPLOYEES,SALARY,DEPARTMENTS
WHERE=
AND
=
AND
='财务部'
AND
INCOME>2200;数据汇总
(1)求财务部雇员的平均收入
/**
*查找财务部雇员的平均收入
**/
SELECTAVG(INCOME)FROMSALARY,EMPLOYEES,DEPARTMENTS
WHERE=
AND
=
AND
='财务部';
(2)求财务部雇员的平均实际收入
SELECTAVG(InCome-OutCome)AS财务部平均实际收入
FROMSalary
WHEREEmployee_IDIN
(SELECTEmployee_IDFROMEmployees
WHEREDepartment_ID=
(SELECTDepartment_IDFROMDepartments
WHEREDepartment_Name='财务部'));
(3)求财务部雇员的总人数
SELECTCOUNT(Employee_ID)FROMEmployees
WHEREDepartment_ID=
(SELECTDepartment_IDFROMDepartments
WHEREDepartment_Name='财务部');
5、GROUPBY和ORDERBY子句的使用
(1)求各部门的雇员数
/**
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 太原 理工大学 oracle 大型 数据库 实验 报告