数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx

上传人:b****6 文档编号:19267974 上传时间:2023-01-04 格式:DOCX 页数:11 大小:138.36KB
下载 相关 举报
数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx_第1页
第1页 / 共11页
数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx_第2页
第2页 / 共11页
数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx_第3页
第3页 / 共11页
数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx_第4页
第4页 / 共11页
数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx

《数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。

数据库应用实验报告视图存储过程触发器等的建立与维护Word文档下载推荐.docx

预习报告成绩:

指导教师审核(签名):

年月日

预习报告

一、实验目的

1.学会使用企业管理器建立视图,应用视图插入、删除、修改数据;

2.掌握存储过程的使用方法;

3.掌握触发器的使用方法。

二、实验内容

此实验是综合视图、存储过程、触发器等知识应用的一个综合性实验。

实验要求:

1.利用所创建的数据库和数据表,综合应用视图、存储过程、触发器等知识完善数据库;

2.掌握应用更新视图数据可以修改基本表数据的方法;

3.熟练掌握添加、修改、删除记录的存储过程的定义及调用;

4.掌握通过触发器来实现数据的参照完整性。

实验内容要求:

利用员工管理数据库YGGL中3个表:

Employees:

员工自然信息表、Departments:

部门信息表、Salary:

员工薪水情况表。

(1)利用YGGL各表建立视图实现各种连接查询。

建立视图view1,查询所有职工的员工编号、姓名、部门名和收入,并按部门名顺序排列。

建立视图view2,查询所有职工的员工编号、姓名和平均工资。

建立视图view3,查询各部门名和该部门的所有职工平均工资。

(2)编写对YGGL各表进行插入、修改、删除操作的存储过程,然后编写程序,调用这些存储过程。

创建一个为Employees表添加员工记录的存储过程addEmployees。

创建一个存储过程delEmployees删除Employees表中指定员工编号的记录。

(3)对于YGGL数据库,请用触发器实现两个表间的参照完整性。

在表Departments上创建一个触发器Departments_update,当更改部门编号时同步更改Employees表中对应的部门编号。

在表Employees上创建一个触发器Employees_delete,当删除员工记录时同步删除salary表中对应的工资收入记录。

参考实例步骤:

1.创建视图

(1)班级表(U_CLASSES):

ID含义为"

班号"

CLASS含义为"

班名"

DEPARTMENT含义为所在系,各字段类型按需要设置是否允许为空,ID字段被设置为主键。

(2)成绩表(U_SCORES):

STUDENT_ID含义为学号,COURSE_ID含义为课程号,SCORE为成绩,各字段类型按需要设置是否允许为空,STUDENT_ID、COURSE_ID字段被设置为主键。

(3)课程表(U_COURSES):

COURSE含义为课程名称,ID含义为课程编号,CREDIT含义为课程学分。

(4)学生表(U_STUDENTS),表结构如下:

序号

字段

类型(长度)

主键

含义

1

ID

char(10)

学号

2

NAME

varchar(16)

 

姓名

3

CLASS_ID

tinyint

所在班级编号

1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图显示学号、姓名、课程、成绩。

1)启动企业管理器、注册、连接

2)展开服务器、数据库、在视图上右击,在快捷菜单中执行"

新建视图(V)..."

3)在新视图窗口内的关系图窗格内右击鼠标,弹出的菜单即为视图设计菜单,执行"

添加表(B)..."

4)再在添加表对话框中选择U_SCORES表,再单击添加按钮。

5)依此操作,分别添加U_STUDENTS、U_COURSES表,单击关闭按钮。

6)再在关系窗格内,拖动U_STUDENTS表的"

ID"

至U_SCORES的STUDENT_ID,拖动U_COURSES表的"

至U_SCORES的COURSE_ID,再分别选中U_STUDENTS表的"

"

NAME"

列(列前的复选框),U_COURSES表的"

COURSE"

列以及U_SCORES表的"

SCORE"

列,然后单击"

!

"

按钮,显示视图结果。

7)单击保存按钮,将视图保存为V_SCORES,单击确定。

2.用查询分析器建立一个基于学生表、班级表的学生视图(V_STUDENTS),包括学号、姓名、班级、系,SQL语句如下:

1)CREATEVIEWdbo.V_STUDENTS

AS

SELECTdbo.U_STUDENTS.ID,dbo.U_STUDENTS.NAME,dbo.U_CLASSES.CLASS,dbo.U_CLASSES.DEPARTMENT

FROMdbo.U_STUDENTSINNERJOIN

dbo.U_CLASSESONdbo.U_STUDENTS.CLASS_ID=dbo.U_CLASSES.ID

3.自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示课程编号、课程名、学分。

2.创建存储过程

在查询分析器编辑窗口输入各存储过程的代码并执行以下程序。

(1)添加职员记录的存储过程EmployeeAdd:

USEYGGL

GO

CREATEPROCEDUREEmplo)reeAdd

(@employeeidchar6),@namechar(10),@birthdaydatetime,

@sexbit,@addresschar(20),@zipchar(6),@phonenumberchar(12),

@emailaddresschar(20),@departmenflDchar(3))

BEGIN

INSERTINTOEmployees

VALUES(@employeeid,@name,@birthday,@sex,@address,

@zip,@phonenumber,@emailaddress,@departmentlD)

END

RETURN

GO

(2)修改职员记录的存储过程EmployeeUpdate:

USEYGGL

GO

CREATEPROCEDUREEmployeeUpdate

(@empidchar(6),@employeeidchar(6),@namechar(10),@birthdaydatetime,

@sexbit,@addresschar(20),@zipchat(6),@phonenumberchar(12),

@emailaddresschar(20),@departmentlDchar(3))

AS

UPDATEEmployees‘

SETEmployeeid=@employeeid,

Name=@name.

Birthday=@birthday,

Sex=@sex,

Address=@address.

Zip=@zip,

Phonenumber=-@phonenumber,

Emailaddree=@emailaddress.

DepartmentD=@departmenflD

WHEREEmployeeid=@empid

END

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

CREATEPROCEDUREEmployeeDelete

(@employeeidchar(6))

DELETEFROMEmployees

WHEREEmployeeid=@employeeid

RETURN

G0

3.调用存储过程

EXECEmployeeAdd’’,’刘朝’,’’,1,’武汉小洪山5号’,”,”,”,’3’

EXECEmployeeupdate’’,’’,’刘平’,’’,1,’武汉小洪山5号’,”,”,”,’2’

USEYGGI,

EXECEmployeeDelete’’

分析一下此段程序执行时可能出现哪几种情况。

【思考与练习】

编写如下T-SQL程序:

(1)自定义1个数据类型,用于描述YGGL数据库中的DepartmentlD字段,然后编写代码重新定义数据库各表。

(2)编写对YGGL各表进行插入、修改、删除操作的存储过程,然后,编写l段程序调用这些存储过程。

(3)对于YGGL数据库,表Employees的EmployeelD列与表Salary的EmployeelD列应满足参照完整性规则,请用触发器实现两个表问的参照完整性。

4.创建触发器

对于YGGL数据库,表Employees的DepartmentID列与表Departments的DepartmentID列对应满足参照完整性规则,即:

(1)向Employees表添加1条记录时,该记录的DepartmentID值在Departments表中应存在。

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

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

对于上述参照完整性规则,在此通过触发器实现。

在查询分析器编辑窗口输入各触发器的代码并执行:

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

USEYGGL

CREATETRIGGEREmployeesInsondbo.Employees

FORINSRET,UPDATE

BEGIN

IF((SELECTins.departmentidfrominsertedins)NOTIN

(SELECTdepartmentidFROMdepartments))

ROLLBACK

/*对当前事务回滚,即恢复到插入前的状态

②修改Departments表departmentID字段值时,该字段在Employees表中的对应值也进行相应修改。

CREATETRIGGERDepartmentsUpdateondbo.Departments

FoRUPDATE

IF(COLUMNS_UPDATED()&

01)>

UPDATEEmployees

SETDepartmentlD=(SELECTins.DepartmentlDfromINSERTEDins)

WHEREDepaxtmentlD=(SELECTDepartmentlDFROMdeleted)

③删除Departments表中1条记录的同时删除该记录departmentlD字段值在Employees表中对应的记录。

CREATETRIGGERDepartmentsDeleteOndb.Departments

FORDELETE

WHEREDepartmentlD=(SELECTDepartmentlDFROMdeleted)

【思考与练习】

上述触发器的功能用完整性的方法完成。

(2)对于YGGL数据库,表Employees的EmployeelD列与表Salary的EmployeelD列应满足参照完整性规则,请用触发器实现两个表间的参照完整性。

实验报告成绩:

年月日

实验报告

1.添加职员记录的存储过程EmployeeAdd:

2.修改职员记录的存储过程EmployeeUpdate:

3.删除职员记录的存储过程EmployeeDelete

4.调用存储过程

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

6.修改Departments表departmentID字段值时,该字段在Employees表中的对应值也进行相应修改。

7.删除Departments表中1条记录的同时删除该记录departmentlD字段值在Employees表中对应的记录

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

当前位置:首页 > 表格模板 > 合同协议

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

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