oracle上机实验报告.docx
《oracle上机实验报告.docx》由会员分享,可在线阅读,更多相关《oracle上机实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
oracle上机实验报告
ORACLE数据库上机实验报告
专业班级:
09计算机1班姓名:
付向飞学号:
实验一创建数据库和表
目的与要求
(1)了解数据库的结构以及一些基本概念
(2)了解表的结构特点
(3)了解oracle11g的基本数据类型
(4)学会使用DCBA创建数据库
(5)学会使用界面方式创建表
(6)学会使用SQL语句手工创建数据库
(7)学会使用SQL语句创建表
实验准备
首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。
其次创建数据库必须要确定数据名、所有者(即创建数据库的用户)、数据库大小、SGA分配和存储数据的文件。
然后,确定数据库包含哪些表以及所包含的各表的结构,还要了解oracle11g的常用数据类型,以创建数据库表。
此外还要了解两种常用的创建数据库、表的方法,即利用DCBA创建和使用PL/SQL的CREATEDATABASE语句创建。
实验内容
在scott用户中创建表
1,Employees(员工信息表)表
createtableEmployees
(
EmployeeIDchar(6)primarykey,
Namechar(10)notnull,
Birthdaydatenotnull,
Sexnumber
(1)notnull,
Addresschar(20),
Zipchar(6),
PhoneNumberchar(12),
DepartmentIDchar(3)notnull
);
查看创建后的Employees表
2,Departments(部门信息)表
createtableDepartments
(
DepartmentIDchar(3)primarykey,
DepartmentNamechar(20)notnull,
Notevarchar2(100)
);
查看创建后的Departments表
3,Salary(员工薪水情况)表
createtableSalary
(
EmployeeIdchar(6)primarykey,
InComenumber(8,2)notnull,
OutComenumber(8,2)notnull
);
查看创建后的Salary表
实验二表数据插入,修改和删除
目的与要求
(1)学会使用PL/SQL语句对数据库表进行插入,修改,和删除数据的操作
(2)学会使用SQLDeveloper对数据库表进行,修改,和删除数据的操作
(3)了解数据库更新操作时要注意数据完整性
(4)了解PL/SQl语句对表数据操作的灵活控制功能
实验准备
首先了解对表数据的插入、删除、修改都属于表数据的更新操作。
对表数据的操作可以在SQLDeveloper中进行,也可以由PL/SQL语句实现。
其次要掌握PL/SQL中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE和DELETE(或TRANCATETABLE)。
要特别注意在执行插入、删除、修改等数据更新操作时,必须保证数据完整性。
此外,还要了解使用PL/SQL语句在对表数据进行插入、修改、及删除时,比在SQLDeveloper中操作表数据更灵活,功能更强大。
实验内容
一在表中插入数据
1,在Employees表中插入数据
insertintoEmployeesvalues('','王林',to_date('1966-01-23','YYYY-MM-DD'),1,'中山路32-1-508','','','2');
insertintoEmployeesvalues('','伍容华',to_date('1976-03-28','YYYY-MM-DD'),1,'北京东路100-2','','','1');
insertintoEmployeesvalues('','王向容',to_date('1982-12-09','YYYY-MM-DD'),1,'四牌楼10-0-108','','','1');
insertintoEmployeesvalues('','李丽',to_date('1960-07-30','YYYY-MM-DD'),0,'中山东路102-2','','','1');
insertintoEmployeesvalues('','刘明',to_date('1972-10-18','YYYY-MM-DD'),1,'虎距路100-2','','','5');
insertintoEmployeesvalues('','朱俊',to_date('1965-09-28','YYYY-MM-DD'),1,'牌楼巷5-3-106','','','5');
insertintoEmployeesvalues('','钟敏',to_date('1979-08-10','YYYY-MM-DD'),0,'中山路103-3-105','','','3');
insertintoEmployeesvalues('','张石兵',to_date('1974-10-01','YYYY-MM-DD'),1,'解放路34-1-203','','','5');
insertintoEmployeesvalues('','林涛',to_date('1977-04-02','YYYY-MM-DD'),1,'中山北路24-35','','','3');
insertintoEmployeesvalues('','李玉珉',to_date('1968-09-20','YYYY-MM-DD'),1,'热河路209-3','','','4');
insertintoEmployeesvalues('','叶凡',to_date('1978-11-18','YYYY-MM-DD'),1,'北京西路3-7-52','','','4');
insertintoEmployeesvalues('','陈林林',to_date('1969-09-03','YYYY-MM-DD'),0,'汉中路120-4-12','','','4');
查看插入数据后的Employees表
2,在Departments表中插入数据
insertintoDepartmentsvalues('1','财务部','null');
insertintoDepartmentsvalues('2','人力资源部','null');
insertintoDepartmentsvalues('3','经理办公室','null');
insertintoDepartmentsvalues('4','研发部','null');
insertintoDepartmentsvalues('5','市场部','null');
查看插入数据后的Departments表
3,在Salary表中插入数据
insertintoSalaryvalues('',2100.8,123.09);
insertintoSalaryvalues('',1582.62,88.03);
insertintoSalaryvalues('',2569.88,185.65);
insertintoSalaryvalues('',1987.01,79.58);
insertintoSalaryvalues('',2066.15,108.0);
insertintoSalaryvalues('',2980.7,210.2);
insertintoSalaryvalues('',3259.98,281.52);
insertintoSalaryvalues('',2860.0,198.0);
insertintoSalaryvalues('',2347.68,180.0);
insertintoSalaryvalues('',2531.98,199.08);
insertintoSalaryvalues('',2240.0,121.0);
insertintoSalaryvalues('',1980.0,100.0);
查看插入数据后的Salary表
二在表中修改数据
例如:
修改表Salary中某个记录的字段值
updateSalarysetINCOME=2890.5whereEmployeeID='';
查看修改后的数据
三在表中删除数据
例如:
删除表Salary中一行记录
deletefromSalarywhereEmployeeID='';
查看删除后的数据
实验三数据库的查询和视图
目的与要求
(1)掌握SELECT语句的基本语法
(2)掌握子查询的表示方法
(3)掌握连接查询的表示方法
(4)掌握数据汇总的方法
(5)掌握SELECT语句的GROUPBY子句的作用和使用方法
(6)掌握SELECT语句ORDERBY子句的作用和使用方法
(7)掌握视图的使用方法
实验准备
(1)了解SELECT语句的基本语法格式和执行方法
(2)了解子查询的表示方法、连接查询和数据汇总的方法
(3)了解SELECT语句的GROUPBY子句的作用和使用方法
(4)了解SELECT语句的ORDERBY子句的作用
(5)了解视图的作用和创建视图的方法
(6)了解视图的使用方法
实验内容
1,select语句的基本使用
(1)查询Employees表
select*fromEmployees;
(2)查询每个雇员的的地址和电话
selectAddress,PhoneNumberfromEmployees;
(3)查询EmployeeID为的雇员地址和电话
selectAddress,PhoneNumberfromEmployeeswhereEmployeeID='';
(4)查询Employees表中所有女雇员的地址和电话
selectAddress地址,PhoneNumber电话fromEmployeeswheresex=0;
(5)计算每个雇员的实际收入
selectEmployeeID,InCome-OutCome实际收入fromSalary;
(6)找出所有姓王的雇员的部门号
selectDepartmentIDfromEmployeeswhereNamelike'王%';
(7)找出所有收入在2000元到3000元之间的雇员号码
selectEmployeeIDfromSalarywhereInComebetween2000and3000;
2,子查询使用
查找在财务部工作的雇员情况
select*fromEmployees
whereDepartmentID=(
selectDepartmentIDfromDepartments
whereDepartmentName='财务部'
);
3,连接子查询的使用
查询每个雇员的情况以及薪水情况
select*
fromEmployeesejoinSalarys
on(e.EmployeeID=s.EmployeeID);
4,数据汇总
求财务部雇员的平均收入
selectavg(InCome)财务部平均工资fromSalary
whereEmployeeIDin
(selectEmployeeIDfromEmployees
whereDepartmentID=
(selectDepartmentIDfromDepartments
whereDepartmentName='财务部'
)
);
5,groupby和orderby子句的使用
(1)求各部门的雇员数
selectcount(DepartmentID)fromEmployeesgroupbyDepartmentID;
(2)将各雇员的情况按收入由低到高排序
select*fromEmployeesejoinSalarys
on(e.EmployeeID=s.EmployeeID)
orderbyInComeasc;
6,使用视图
(1)创建视图
限制查看雇员的某些情况
createorreplaceviewcx_employeesas
selectEmployeeID,Name,Birthday,Sex,DepartmentID
fromEmployees;
查看创建好的视图
(2)使用视图
查询财务部雇员信息
select*fromcx_employees;
实验四索引和完整性
目的与要求
(1)掌握索引的使用方法
(2)掌握数据完整性的概念及分类
(3)掌握各种数据完整性的实现方法
实验准备
(1)了解索引的作用与分类
(2)掌握索引的创建
(3)理解数据完整性的概念及分类
(4)了解各种数据完整性的实现方法
实验内容
1,建立索引
对数据库中Employees表的DepartmentID列建立索引
createindexPK_XS_BAKonEmployees(DepartmentID);
2,实现域完整性
为Employees表的PhoneNumber列建立check约束.
altertableEmployees
add(constraintCH_PHONECHECK(PhoneNumberbetween'0'and'9'));
3,实现实体完整性
为Departments表的DepartmentName列建立唯一性索引
altertableDepartments
add(constraintUN_Departmentsunique(DepartmentName));
4,实现参照完整性
为Employees表中的DepartmentID列建立外键
altertableEmployees
add(constraintFK_EmployeesFOREIGNKEY(DepartmentID)
referencesDepartments(DepartmentID));
实验五PL/SQL编程
目的与要求
(1)进一步巩固第二章和第四章所学的内容
(2)掌握变量的分类及其使用
(3)掌握各种运算符的使用
(4)掌握各种控制语句的使用
(5)掌握系统函数及用户自定义函数的使用
实验准备
(1)了解PL/SQL支持的各种基本数据类型
(2)了解PL/SQL各种运算符、控制语句的功能及使用方法
(3)了解系统函数的调用方法
(4)了解用户自定义函数使用的一般步骤
实验内容
1,条件结构的使用
取出7369的薪水,如果<1200,则输出'low',如果<2000则输出'middle',否则'high'
declare
v_salemp.sal%type;
begin
selectsalintov_salfromemp
whereempno=7369;
if(v_sal<1200)then
dbms_output.put_line('low');
elsif(v_sal<2000)then
dbms_output.put_line('middle');
else
dbms_output.put_line('high');
endif;
end;
/
2,循环结构的使用
输出1到10
declare
ibinary_integer:
=1;
begin
loop
dbms_output.put_line(i);
i:
=i+1;
exitwhen(i>=11);
endloop;
end;
3,选择和跳转语句
declare
v_deptnodept.deptno%type;
v_dnamedept.dname%type;
begin
selectdeptnointov_deptnofromdeptwhereloc='BOSTON';
casev_deptno
when10thenv_dname:
='accounting';
when20thenv_dname:
='research';
when30thenv_dname:
='sales';
when40thenv_dname:
='operations';
else
v_dname:
='Nothing';
endcase;
dbms_output.put_line(v_dname);
end;
4,自定义函数的使用
定义函数
createorreplacefunctionsal_tax
(v_salnumber)
returnnumber
is
begin
if(v_sal<2000)then
return0.10;
elsif(v_sal<2750)then
return0.15;
else
return0.20;
endif;
end;
使用函数
selectlower(ename),sal_tax(sal)fromemp;