实验四 视图、存储过程、触发器等的建立与维护

一、实验目的
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.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图显示学号、姓名、课程、成绩。
1)启动企业管理器、注册、连接
2)展开服务器、数据库、在视图上右击,在快捷菜单中执行"新建视图(V)…"
3)在新视图窗口内的关系图窗格内右击鼠标,弹出的菜单即为视图设计菜单,执行"添加表(B)…"
4)再在添加表对话框中选择U_SCORES表,再单击添加按钮。
5)依此操作,分别添加U_STUDENTS、U_COURSES表,单击关闭按钮。
6)再在关系窗格内,拖动U_STUDENTS表的"ID"至U_SCORES的STUDENT_ID,拖动U_COURSES表的"ID"至U_SCORES的COURSE_ID,再分别选中U_STUDENTS表的"ID",“NAME"列(列前的复选框),U_COURSES表的"COURSE"列以及U_SCORES表的"SCORE"列,然后单击”!"按钮,显示视图结果。
7)单击保存按钮,将视图保存为V_SCORES,单击确定。
2.用查询分析器建立一个基于学生表、班级表的学生视图(V_STUDENTS),包括学号、姓名、班级、系,SQL语句如下:
1)

CREATE VIEW dbo.V_STUDENTS
AS
SELECT  dbo.U_STUDENTS.ID,dbo.U_STUDENTS.NAME, dbo.U_CLASSES.CLASS, dbo.U_CLASSES.DEPARTMENT
FROM dbo.U_STUDENTS INNER JOIN
dbo.U_CLASSES ON dbo.U_STUDENTS.CLASS_ID = dbo.U_CLASSES.ID 

3.自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示课程编号、课程名、学分。
2.创建存储过程
在查询分析器编辑窗口输入各存储过程的代码并执行以下程序。
(1)修改职员记录的存储过程EmployeeUpdate:

 USE YGGL
GO
  CREATE  PROCEDURE EmployeeUpdate
  (@empid char(6),@employeeid char(6),@name char(10),@birthday datetime,
  @sex bit,@address char(20),@zip chat(6),@phonenumber char(12),
  @emailaddress char(20),@departmentlD char(3))
  AS
  BEGIN
    UPDATE Employees    ‘
    SET Employeeid=@employeeid,
    Name=@name.
    Birthday=@birthday,
    Sex=@sex,
    Address=@address.
    Zip=@zip,
    Phonenumber=-@phonenumber,
    Emailaddree=@emailaddress.
    DepartmentD=@departmenflD
    WHERE Employeeid=@empid
 END
 RETURN
 GO

在这里插入图片描述

(2)删除职员记录的存储过程EmployeeDelete:
USE YGGL
GO
CREATE PROCEDURE EmployeeDelete
(@employeeid char(6))
AS
BEGIN
DELETE FROM Employees
WHERE Employeeid=@employeeid
END
RETURN
G0

在这里插入图片描述在这里插入图片描述

3.调用存储过程

  USE YGGL
  EXEC EmployeeAdd’990230’,’刘朝’,’890909’,1,’武汉小洪山5号’,”,”,”,’3’
  GO
  USE YGGL
  EXEC Employeeupdate’990230’,’990232’,’刘平’,’890909’ ,1,’武汉小洪山5号’,”,”,”,’2’
  GO
  USE YGGI,
  EXEC EmployeeDelete’990232’
  GO

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

位沁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值