太原理工大学ORACLE数据库实验.docx
- 文档编号:8042262
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:66
- 大小:3.35MB
太原理工大学ORACLE数据库实验.docx
《太原理工大学ORACLE数据库实验.docx》由会员分享,可在线阅读,更多相关《太原理工大学ORACLE数据库实验.docx(66页珍藏版)》请在冰豆网上搜索。
太原理工大学ORACLE数据库实验
本科实验报告
课程名称:
ORACLE大型数据库系统
实验项目:
创建数据库和表
实验地点:
迎西校区4506机房
专业班级:
软件工程学号:
学生姓名:
指导教师:
2012年5月
实验一创建数据库和表
目的与要求
(1)了解数据可的结构以及一些基本概念。
(2)了解表的结构特点。
(3)了解Oracle10g的基本数据类型。
(4)学会使用DBCA创建数据库。
(5)学会使用界面方式创建表。
(6)学会使用SQL语句手工穿件数据库。
(7)学会使用SQL语句创建表。
实验准备
首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。
其次创建数据库必须要确定数据库名、所有者(即创建数据库的用户)、数据库大小、SGA分配和存储数据库的文件。
然后,确定数据库包含哪些表以及所包含的各表的结构,还要了解Oracle10g的常用数据类型,以创建数据库的表。
此外还要了解两种常用的创建数据库、表的方法,即利用DBCA创建和使用PL/SQL的CREATEDATABASE语句创建。
实验内容
创建企业管理的员工管理数据库YGGL,包含Employees(员工自然信息)表、Department(部门信息)表和Salary(员工薪水情况)表。
使用OEM创建表
图1-1创建Employees表
图1-2成功创建Employees表
图1-3成功删除Employees表
图1-4创建Departments表
图1-5成功创建Departments表
图1-6成功删除Departments表
图1-7创建Salary表
图1-8成功创建Salary表
图1-9成功删除Salary表
在PL/SQL语句创建表
1.创建Employees表
createtableEmployee
(
EmployeeIDchar(6)NOTNULLPRIMARYKEY,
Namechar(10)NOTNULL,
BithdaydateNOTNULL,
Sexnumber
(1)NOTNULL,
Addresschar(20)NULL,
Zipchar(6)NULL,
PhoneNumberchar(12)NULL,
DepartmentIDchar(3)NOTNULLREFERENCESDepartments(DepartmentID)
)tablespaceusers;
图1-10使用SQL语句创建Employees表
2.创建Departments表
createtableDepartments
(
DepartmentIDchar(3)NOTNULLPRIMARYKEY,
Departmentnamechar(20)NOTNULL,
Notevarchar2(100)NULL
)tablespaceusers;
图1-11使用SQL语句创建Departments表
3.创建Salary表
createtableSalary
(
EmployeeIDchar(6)NOTNULLPRIMARYKEY,
InComenumber(8,2)NOTNULL,
OutComenumber(8,2)NOTNULL
)tablespaceusers;
图1-11使用SQL语句创建Salary表
本科实验报告
课程名称:
ORACLE大型数据库系统
实验项目:
表数据插入、修改和删除
实验地点:
迎西校区4506机房
专业班级:
软件工程学号:
学生姓名:
指导教师:
2012年5月
实验二表数据插入、修改和删除
目的与要求
(1)学会使用PL/SQL语句对数据表进行插入、修改和删除数据的操作。
(2)了解数据更新操作时要注意数据完整性。
(3)了解PL/SQL语句对表数据操作的灵活性。
实验准备
首先了解对表数据的插入、删除、修改都属于表数据的更新操作。
对表数据的操作可以再SQLDeveloper中进行,也可以由PL/SQL语句实现。
其次要掌握PL/SQL中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE和DELETE(获TRAUNCATETABLE).
要特别注意在执行插入、删除、修改等数据更新操作时,必须保证数据完整性。
此外,还要了解使用PL/SQL语句在对表数据进行插入、修改及删除时,比SQLDeveloper中操作表数据更灵活,功能更强大。
实验内容
使用PL/SQL语句,在实验1建立的数据库的三个表Employees、Departments和Salary中分别插入多行数据记录,然后修改和删除一些记录。
使用PL/SQL进行有限制的修改和删除。
使用PL/SQL命令操作数据
(1)使用PL/SQL命令分别向Employees、Departments和Salary表中插入一行记录。
在启动SQL*PLUS窗口中输入以下PL/SQL语句并执行。
INSERTINTOEmployeesVALUES('011112','罗林',TO_DATE('19730626','YYYYMMDD'),1,'解放路100号',210002,4055663,5);
select*fromEmployees;
图2-1
INSERTINTODepartmentsVALUES('2','人力资源部',NULL);
select*fromDepartments;
INSERTINTOSalaryVALUES('011112',1200.09,50);
select*fromSalary;
图2-2
(2)使用PL/SQL命令命令修改表Salary中的某个记录的字段值。
UPDATESalarySETInCome=2890WHEREEmployeeID='011112';
查询修改结果:
select*fromSalary;
图2-3
(3)修改表employees和表departments的记录值,注意完整性。
UPDATEEmployeesSETAddress='太原理工大学'WHEREEmployeeID='011112';
select*fromEmployees;
图2-4
UPDATEDepartmentsSETDepartmentname='中情局'WHEREDepartmentID=2;
select*fromDepartments;
图2-5
(4)使用PL/SQL命令修改表Salary中的所有记录的字段值。
UPDATESalarySETInCome=InCome+100;
查询修改结果,与之前的内容对比。
图2-6
(5)使用DELETE语句删除Salary表中一行记录。
查询删除前后对比。
DELETEfromSalaryWhereEmployeeID=’011112’;
图2-7
(6)使用TRANCATETABLE语句删除表中所有行。
TRUNCATETABLESalary;
图2-8
本科实验报告
课程名称:
ORACLE大型数据库系统
实验项目:
数据库的查询和视图
实验地点:
迎西校区4506机房
专业班级:
软件工程学号:
学生姓名:
指导教师:
2012年5月
实验三数据库的查询和视图
目的与要求
(1)掌握SELECT语句的基本语法。
(2)掌握子查询的表示方法。
(3)掌握连接查询的表示方式。
(4)掌握数据汇总的方法。
(5)掌握SELECT语句的GROUPBY子句的作用和使用方法。
(6)掌握SELECT语句的ORDERBY子句的作用和使用方法。
(7)掌握视图的使用方法。
实验准备
(1)了解SELECT语句的基本语法格式和执行方法。
(2)了解子查询的表示方法、连接查询和数据汇总的方法。
(3)了解SELECT语句和GROUPBY子句的作用和使用方法。
(4)了解SELECT语句和GROUPBY子句的作用。
(5)了解视图的作用和创建视图的方法。
(6)了解视图的使用方法。
实验内容
1.SELECT语句的基本使用
(1)对于实验2给出的数据表结构,查询每个雇员的所有数据。
在SQL*PLUS窗口中输入如下的语句并执行:
SELECT*FROMEmployees;
图3-1
用select语句查询department表和salary表所有记录。
select*fromdepartments;
图3-2
select*fromsalary;
图3-3
(2)查询每个雇员的地址和电话。
SELECTAddress,PhoneNumberFromEmployees;
图3-4
用select语句查询department表和salary表一列或若干列。
selectdepartmentid,departmentnamefromdepartments;
图3-5
selectemployeeid,incomefromsalary;
图3-6
(3)查询EmployeeID为000001的雇员的地址和电话。
SELECTAddress,PhoneNumberFromEmployees
WHEREEmployeeID='011112';
selectdepartmentid,departmentnamefromdepartmentswheredepartmentid=1;
selectemployeeid,incomefromsalarywhereemployeeid=000001;
图3-7
(4)查询Employees表中所有女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址和电话。
SELECTAddressAS地址,PhoneNumberAS电话FROMEmployeesWHEREsex=0;
图3-8
(5)计算每个雇员的实际收入。
SELECTEmployeeID,InCome-OutComeAS实际收入FromSalary;
图3-9
(6)找出所有姓王的雇员的部门号。
SELECTDepartmentIDFROMEmployeesWHEREnameLIKE’王%’;
图3-10
找所有地址中含有中山的雇员的豪门及部门号。
SELECTemployeeid,DepartmentIDFROMEmployeesWHEREaddressLIKE'%中山%';
图3-11
(7)找出所有收入在2000元~3000元之间的雇员号码。
SelectEmployeeIDfromSalarywhereIncomebetween2000and3000;
图3-12
找出所有在部门1或部门2工作的雇员的号码。
SelectEmployeeIDfromSalarywheredepartmentid=1ordepartmentid=2;
图3-12
2.子查询的使用
(1)查询在财务部工作的雇员的情况
SELECT*FROMEmployees
WHEREDepartmentID=
(SELECTDepartmentID
fromDepartments
WHEREDepartmentName='财务部'
);
图3-13
用子查询的方法找出所有收入在2500元以下的雇员的情况。
select*fromemployees
whereemployeeidin
(
selectemployeeidfromsalary
whereincome<2500.00
);
图3-14
(2)查找财务部年龄不低于所有研发部雇员年龄的雇员的姓名。
selectNamefromEmployees
whereDepartmentIDIN
(selectdepartmentid
fromdepartments
wheredepartmentName='财务部'
)
ANDBirthday<=ALL
(selectBirthday
fromemployees
wheredepartmentidIN
(selectdepartmentid
fromdepartments
wheredepartmentname='研发部'
)
);
图3-15
用子查询方法查找研发部比所有财务部雇员收入高的雇员姓名。
selectnamefromemployees
whereemployeeid=
(
selectemployeeidfromsalary
where
employeeidin
(selectemployeeidfromEmployees
whereDepartmentIDIN
(selectdepartmentid
fromdepartments
wheredepartmentName='研发部'
)
)
andincome>all
(selectincomefromsalary
whereemployeeidin
(selectemployeeidfromemployees
wheredepartmentidIN
(selectdepartmentid
fromdepartments
wheredepartmentname='财务部'
)
)
)
);
图3-16
查找比所有财务部的雇员收入都高的雇员的姓名。
selectnamefromemployees
whereemployeeidin
(
selectemployeeid
fromsalary
whereincome>all
(
selectincome
fromsalary
whereemployeeidin
(
selectemployeeidfromemployees
wheredepartmentid=
(selectdepartmentid
fromdepartments
wheredepartmentname='财务部'
)
)
)
);
图3-17
用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名。
selectNamefromEmployees
where
Birthday (selectBirthdayfromemployees wheredepartmentidIN (selectdepartmentid fromdepartments wheredepartmentname='研发部' ) ); 图3-18 3.连续查询的使用 (1)查询每个雇员的情况以及其薪水的情况。 selectemployees.*,salary.* fromemployees,salary whereemployees.employeeid=salary.employeeid; 图3-19 查询每个雇员的情况及工作情况。 selectemployees.*,departments.* fromemployees,departments whereemployees.departmentid=departments.departmentid; 图3-20 (2)查询财务部收入在2000元以上的雇员姓名及其薪水详情。 Selectname,income,outcomeFromemployees,salary,departments Whereemployees.employeeid=salary.employeeid andEmployees.departmentid=departments.departmentid andDepartmentname='财务部' andincome>2000; 图3-21 查询研发部在1966年以前出生的雇员姓名及薪水详情。 Selectname,income,outcomeFromemployees,salary,departments Whereemployees.employeeid=salary.employeeid andEmployees.departmentid=departments.departmentid andDepartmentname='研发部' andbirthday 图3-22 4.数据汇总 (1)求财务部雇员的平均收入。 Selectavg(income)as财务部平均收入 Fromsalary Whereemployeeidin (selectemployeeid Fromemployees Wheredepartmentid=( Selectdepartmentid Fromdepartments Wheredepartmentname='财务部') ); 图3-23 求财务部雇员的最高收入和最低收入。 Selectmax(income)as财务部最高收入,min(income)as财务部最低收入 Fromsalary Whereemployeeidin (selectemployeeid Fromemployees Wheredepartmentid=( Selectdepartmentid Fromdepartments Wheredepartmentname='财务部') ); 图3-24 (2)求财务部雇员的平均实际收入。 Selectavg(income)as财务部平均收入 Fromsalary Whereemployeeidin (selectemployeeid Fromemployees Wheredepartmentid=( Selectdepartmentid Fromdepartments Wheredepartmentname='财务部') ); 图3-25 求财务部雇员的最高和最低实际收入。 Selectmax(income-outcome)as财务部最高实际收入,min(income-outcome)as财务部最低实际收入 Fromsalary Whereemployeeidin (selectemployeeid Fromemployees Wheredepartmentid=( Selectdepartmentid Fromdepartments Wheredepartmentname='财务部' ) ); 图3-26 (3)求财务部雇员的总人数。 Selectcount(employeeid)as财务部雇员总人数 Fromemployees Wheredepartmentid= (selectdepartmentid Fromdepartments Wheredepartmentname='财务部'); 图3-27 统计财务部收入在2000以上雇员的数量。 Selectcount(employeeid)as财务部收入大于2000的人数 Fromsalary Whereemployeeidin (selectemployeeid Fromemployees Wheredepartmentid=( Selectdepartmentid Fromdepartments Wheredepartmentname='财务部' ) ) andincome>2000; 图3-28 5.GROUPBY和ORDERBY子句的使用 (1)求各部门的雇员数。 Selectdepartmentidas部门号,count(employeeid)as部门人数 Fromemployees Groupbydepartmentid; Selectcount(employeeid) Fromsalary Groupbydepartmentid; 图3-29 统计各个部门收入在2000以上的雇员的数量。 selectdepartmentidas部门号,count(employeeid)as收入大于2000人数fromemployees whereemployeeidin( Selectemployeeid Fromsalary whereincome>2000 ) Groupbydepartmentid; 图3-30 (2)将各雇员的情况按收入由低到高排列。 Selectemployees.*,salary.* Fromemployees,salary Whereemployees.employeeid=salary.employeeid Orderbyincome; 图3-31 将各个雇员的情况按出生时间先后排序。 Selectemployees.*,salary.* Fromemployees,salary Whereemployees.employeeid=salary.em
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 太原 理工大学 ORACLE 数据库 实验