太原理工大学ORACLE数据库实验.docx

上传人:b****6 文档编号:8042262 上传时间:2023-01-28 格式:DOCX 页数:66 大小:3.35MB
下载 相关 举报
太原理工大学ORACLE数据库实验.docx_第1页
第1页 / 共66页
太原理工大学ORACLE数据库实验.docx_第2页
第2页 / 共66页
太原理工大学ORACLE数据库实验.docx_第3页
第3页 / 共66页
太原理工大学ORACLE数据库实验.docx_第4页
第4页 / 共66页
太原理工大学ORACLE数据库实验.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

太原理工大学ORACLE数据库实验.docx

《太原理工大学ORACLE数据库实验.docx》由会员分享,可在线阅读,更多相关《太原理工大学ORACLE数据库实验.docx(66页珍藏版)》请在冰豆网上搜索。

太原理工大学ORACLE数据库实验.docx

太原理工大学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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1