本科实验报告课程名称: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-1INSERTINTODepartmentsVALUES('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-4UPDATEDepartmentsSETDepartmentname='中情局'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-2select*fromsalary;图3-3(2)查询每个雇员的地址和电话。SELECTAddress,PhoneNumberFromEmployees;图3-4用select语句查询department表和salary表一列或若干列。selectdepartmentid,departmentnamefromdepartments;图3-5selectemployeeid,incomefromsalary;图3-6(3)查询EmployeeID为000001的雇员的地址和电话。SELECTAddress,PhoneNumberFromEmployeesWHEREEmployeeID='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-122.子查询的使用(1)查询在财务部工作的雇员的情况SELECT*FROMEmployeesWHEREDepartmentID=(SELECTDepartmentIDfromDepartmentsWHEREDepartmentName='财务部');图3-13用子查询的方法找出所有收入在2500元以下的雇员的情况。select*fromemployeeswhereemployeeidin(selectemployeeidfromsalarywhereincome2500.00);图3-14(2)查找财务部年龄不低于所有研发部雇员年龄的雇员的姓名。selectNamefromEmployeeswhereDepartmentIDIN(selectdepartmentidfromdepartmentswheredepartmentName='财务部')ANDBirthday=ALL(selectBirthdayfromemployeeswheredepartmentidIN(selectdepartmentidfromdepartmentswheredepartmentname='研发部'));图3-15用子查询方法查找研发部比所有财务部雇员收入高的雇员姓名。selectnamefromemployeeswhereemployeeid=(selectemployeeidfromsalarywhereemployeeidin(selectemployeeidfromEmployeeswhereDepartmentIDIN(selectdepartmentidfromdepartmentswheredepartmentName='研发部'))andincomeall(selectincomefromsalarywher