Oracle数据库张卫东.docx

上传人:b****8 文档编号:9989849 上传时间:2023-02-07 格式:DOCX 页数:17 大小:375.65KB
下载 相关 举报
Oracle数据库张卫东.docx_第1页
第1页 / 共17页
Oracle数据库张卫东.docx_第2页
第2页 / 共17页
Oracle数据库张卫东.docx_第3页
第3页 / 共17页
Oracle数据库张卫东.docx_第4页
第4页 / 共17页
Oracle数据库张卫东.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Oracle数据库张卫东.docx

《Oracle数据库张卫东.docx》由会员分享,可在线阅读,更多相关《Oracle数据库张卫东.docx(17页珍藏版)》请在冰豆网上搜索。

Oracle数据库张卫东.docx

Oracle数据库张卫东

实验报告

 

课程名称:

《Oracle实用教程》

实验地点:

行勉楼A305

专业班级:

软件1319班学号:

2013005655

学生姓名:

张卫东

指导教师:

赵晋明

2016年5月5日

软件工程

班级

软件1319班

2013005655

成绩

张卫东

周次

第九周

2016.4.26

实验

教室

行勉楼A305

题目

实验一、创建数据库和表

目的

要求

(1)了解数据库的结构以及一些基本概念。

(2)了解表的结构特点。

(3)了解Oracle11g的基本数据类型。

(4)学会使用SQL语句手工创建表。

(5)学会使用SQL语句创建表。

仪器

用具

1.HP242G1笔记本win764位系统

2.Oracle11g大型数据库及其相应的配套软件

实验

原理

(1)明确能够创建数据库的的用户必须是系统管理员,或是被授权使用CREATEDATABASE语句的用户。

(2)创建数据库必须确定数据库名、所有者(即创建数据库的用户)、数据库大小、SGA分配和存储数据库的文件。

(3)确定数据库包含哪些表以及所包含的各表的结构,还要了解Orcle11g的常用数据类型,以创建数据库的表。

(4)了解两种常用的创建数据库、表的方法,即利用DBCA创建和使用PL/SQL的CREATEDATABASE语句创建。

 

 

 

 

 

1.在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表

 

心得体会

通过本次的实验,学会了数据库的一些基本操作,数据库的基本概念,以及学会SQL语句创建表

 

软件工程

班级

软件1319班

2013005655

成绩

张卫东

周次

第九周

2016.4.28

实验

教室

行勉楼A305

题目

实验二、表数据的插入、修改和删除

目的

要求

(1)学会使用PL/SQL语句对数据库表进行插入、修改和删除数据的操作。

(2)学会使用SQLDeveloper对数据库表进行插入、修改和删除数据的操作。

(3)了解数据更新操作时要注意数据完整性。

(4)了解PL/SQL语句对表数据操作的灵活控制功能。

 

仪器

用具

1.HP242G1笔记本win764位系统

2.Oracle11g大型数据库及其相应的配套软件

实验

原理

(1)对表数据的插入、删除、修改都属于表数据的更新,对表数据的操作可以在SQLDeveloper中进行,也可以有PL/SQL语句实现。

(2)PL/SQL中用于对表数据进行插入、修改和删除的命令分别是INSERT/UPDATE和DELETE(或TRANCATETABLE)

(3)使用PL/SQL语句在对表数据进行插入、修改及删除时,比在SQLDevelop中操作表数据更灵活,功能更强大、

 

 

 

 

 

 

 

 

 

 

 

 

向表中插入数据

(1)在Employees表中插入数据

insertintoemployeesvalues('000001','王林',to_date('19960123','YYYYMMDD'),1,'中山路32',210003,83355668,2);

insertintoemployeesvalues('010008','伍荣华',to_date('19760123','YYYYMMDD'),1,'北京东路',210001,83321321,1);

insertintoemployeesvalues('020010','王向荣',to_date('19821209','YYYYMMDD'),1,'四牌楼',210006,83792361,1);

insertintoemployeesvalues('020018','李丽',to_date('19600730','YYYYMMDD'),0,'中山东路',210002,83413301,1);

insertintoemployeesvalues('102201','刘明',to_date('19721018','YYYYMMDD'),1,'虎踞路',210013,83606608,5);

insertintoemployeesvalues('102208','朱俊',to_date('19650928','YYYYMMDD'),1,'牌楼巷',210004,84708817,5);

insertintoemployeesvalues('108991','钟敏',to_date('19790810','YYYYMMDD'),0,'中山路10',210003,83346722,3);

insertintoemployeesvalues('111006','张石兵',to_date('19741001','YYYYMMDD'),1,'解放路',210010,84563418,5);

insertintoemployeesvalues('210678','林涛',to_date('19770402','YYYYMMDD'),1,'中山北路',210008,83467336,3);

insertintoemployeesvalues('302566','李玉珉',to_date('19680920','YYYYMMDD'),1,'热河路',210001,58765991,4);

insertintoemployeesvalues('308759','叶凡',to_date('19781118','YYYYMMDD'),1,'北京西路',210002,83308901,4);

insertintoemployeesvalues('504209','陈林琳',to_date('19690903','YYYYMMDD'),1,'汉中路',210018,84468158,4);

查看插入数据后的Employees表

 

(2)在Departments表中插入数据

insertintoDepartmentsvalues('1','财务部','null');

insertintoDepartmentsvalues('2','人力资源部','null');

insertintoDepartmentsvalues('3','经理办公室','null');

insertintoDepartmentsvalues('4','研发部','null');

insertintoDepartmentsvalues('5','市场部','null');

查看插入数据后的Departments表

(3)在Salary表中插入数据

insertintoSalaryvalues('000001',2100.8,123.09);

insertintoSalaryvalues('010008',1582.62,88.03);

insertintoSalaryvalues('102201',2569.88,185.65);

insertintoSalaryvalues('111006',1987.01,79.58);

insertintoSalaryvalues('504209',2066.15,108.0);

insertintoSalaryvalues('302566',2980.7,210.2);

insertintoSalaryvalues('108991',3259.98,281.52);

insertintoSalaryvalues('020010',2860.0,198.0);

insertintoSalaryvalues('020018',2347.68,180.0);

insertintoSalaryvalues('308759',2531.98,199.08);

insertintoSalaryvalues('210678',2240.0,121.0);

insertintoSalaryvalues('102208',1980.0,100.0);

查看插入数据后的Salary表

 

3.在表中修改数据

例如:

修改表Salary中某个记录的字段值

updateSalarysetINCOME=2890.5whereEmployeeID='000001';

查看修改后的数据

 

4.在表中删除数据

例如:

删除表Salary中一行记录

deletefromSalarywhereEmployeeID='000001';

查看删除后的数据

 

心得体会

通过本次实验,我基初步学会了如何使用PL/SQL语句对数据库表进行插入、修改和删除数据的操作,学会了用SQLDEVELOPER对数据库表进行插入、修改和删,实验过程中通过摸索,学会了基本的操作。

 

软件工程

班级

软件1319班

2013005655

成绩

张卫东

周次

第十周

2016.5.3

实验

教室

行勉楼A305

题目

实验五、PL/SQL编程

目的

要求

(1)进一步巩固第二章到第四章所学的内容。

(2)掌握变量的分类及其使用。

(3)掌握各种运算符的使用。

(4)掌握各种控制语句的使用。

(5)掌握系统函数及用户自定义函数的使用。

仪器

用具

(1)HP242G1笔记本win764位系统

(2)Oracle11g大型数据库及其相应的配套软件

实验

原理

(1)PL/SQL支持各种基本数据类型。

(2)PL/SQL支持各种运算符、控制语句的功能和使用方法。

(3)PL/SQL支持自定义函数的使用。

 

 

 

 

 

 

 

 

 

1、自定义函数的使用

(1)定义一个函数实现如下功能。

对于一个给定的DepartmentID值,查询该值在

departments表中是否存在,若存在返回0,否则返回-1。

createorreplacefunctioncheck_id(departmentinchar)

returnnumber

as

numnumber;

xnumber;

begin

selectcount(*)intox

fromdepartments

whereDepartmentID=departmentid;

ifx>0then

num:

=0;

else

num:

=-1;

endif;

return(num);

end;

 

(2)写一段PL/SQL脚本程序调用上述函数。

当向employees表插入一条记录时,首先调用函数CHECK_ID检索该记录的departmentid值在表departments的departmentid字段中是否存在对应的值,若存在,则该记录插入employees表。

declare

numnumber;

begin

num:

=check_id('2');

ifnum=0then

insertintoemployeesvalues('990210','张文',to_date('19820324','YYYYMMDD'),0,'镇江路','210009','3497534',2);

endif;

end;

“张文”记录插入成功,如下:

 

心得体会

通过本次的实验,结合第二章和第四章的内容,学会了变量的分类、运算符、控制语句的使用,在做实验过程中探索其中的道理。

软件工程

班级

软件1319班

2013005655

成绩

张卫东

周次

第十周

2016.5.5

实验

教室

行勉楼A305

题目

实验六、存储过程和触发器的使用

目的

要求

(1)掌握存储过程的使用方法。

(2)掌握触发器的使用方法。

仪器

用具

1.HP242G1笔记本win764位系统

2.Oracle11g大型数据库及其相应的配套软件

实验

原理

触发器的使用

(1)创建触发器

向Employees表中插入或修改一条记录时,通过触发器检查记录的值在Departments表是否存在,若不存在,则取消插入或修改操作。

(2)修改Departments表的DepartmentID字段值时,该字段在Employees表中的对应值也做相应的修改。

(3)删除Departments表中一条记录的同时,也删除该记录DepartmentID字段值在Employees表中对应的记录。

3、存储过程

(1)添加职员记录的存储过EmployeeADD。

(2)修改职员记录的存储过程EmployeeUPDATE。

(3)调用存储过程 。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

触发器的使用

(1)创建触发器

向Employees表中插入或修改一条记录时,通过触发器检查记录的值在Departments表是否存在,若不存在,则取消插入或修改操作。

CREATEORREPLACETRIGGEREmployeesIns

AFTERINSERTORUPDATEONEmployeesFOREACHROW

DECLARE

numnumber;

BEGIN

SELECTCOUNT(*)INTOnum

FROMDepartments

WHEREDepartmentID=:

NEW.DepartmentID;

IFnum=0THEN

DBMS_OUTPUT.PUT_LINE('职员所在部门不存在');

ENDIF;

END;

(2)修改Departments表的DepartmentID字段值时,该字段在Employees表中的对应值也做相应的修改。

CREATEORREPLACETRIGGERDepartmentsUpdate

AFTERUPDATEONDepartmentsFOREACHROW

BEGIN

IFUPDATINGTHEN

UPDATEEmployees

SETDepartmentID=:

NEW.DepartmentID

WHEREDepartmentID=:

OLD.DepartmentID;

ENDIF;

END;

(3)删除Departments表中一条记录的同时,也删除该记录DepartmentID字段值在Employees表中对应的记录

CREATEORREPLACETRIGGERDepartmentsDelete

AFTERDELETEONDepartmentsFOREACHROW

BEGIN

DELETEFROMEmployees

WHEREDepartmentID=:

OLD.DepartmentID;

END;

3、存储过程 

(1)添加职员记录的存储过EmployeeADD。

 

CREATEORREPLACEPROCEDUREEmployeeAdd

employeeidINchar,

nameINchar,

birthdayINdate,

sexINnumber,

addressINchar,

zipINchar,

phonenumberINchar,

departmentIDINchar

AS

BEGIN

INSERTINTOEmployeesVALUES(employeeid,name,birthday,sex,address,zip,phonenumber,departmentID);

END;

(2)修改职员记录的存储过程EmployeeUPDATE。

CREATEORREPLACEPROCEDUREEmployeeUpdate

(old_idINchar,new_idINchar,new_nameINchar,new_birthdayINdate,

new_sexINnumber,new_addressINchar,new_zipINchar,new_phonenumberINchar,

new_departmentIDINchar

AS

BEGIN

UPDATEEmployees

SETEmployeeID=new_id,

Name=new_name,

Sex=new_sex,

Address=new_address,

Zip=new_zip,

Phonenumber=new_phonenumber,

DepartmentID=new_departmentID

WHEREEmployeeID=old_id;

commit;

END;

(3)删除职员记录的存储过程EmployeeDelete。

CREATEORREPLACEPROCEDUREEmployeeDelete(idINchar)

AS

BEGIN

DELETEFROMEmployees

WHEREEmployeeID=id;

COMMIT;

end;

4、调用存储过程 

(1)EXECEmployeeAdd('990230','刘朝',TO_DATE('19890909','YYYYMMDD'),1,'武汉小洪山',null,null,3);

查询Employees表,可看到数据已插入成功:

(2)

EXECEmployeeUpdate('990230','990232','刘平',TO_DATE('19890909','YYYYMMDD'),1,'武汉小洪山',null,null,'2');

查询Employees表,可看到数据已更新成功:

(3)EXECEmployeeDelete('990232');

查询Employees表,可看到数据已删除成功:

 

心得体会

通过本次的实验初步掌握了存储过程和触发器的使用,虽然在实验过程中有时候出错,但是依然学到了很多知识。

 

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

当前位置:首页 > 幼儿教育 > 育儿理论经验

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

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