实验五视图、存储过程与触发器的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五视图、存储过程与触发器的应用准备工作:

1.创建数据库Student

2.生成一个表名为student的表

3

4.用企业管理器创建教工表teacher,要求如下:

一、目的与要求

1.掌握创建、修改、删除视图的SQL语句的用法。

2.掌握使用企业管管理器创建视图的方法。

3.了解存储过程基本概念和类型,掌握创建存储过程的方法和步骤。

4.掌握创建、查看、执行、修改和删除存储过程的SQL命令的用法。

5.了解触发器的基本概念和类型,掌握创建触发器的方法和步骤。

6.掌握创建查看、修改、使用和删除触发器的SQL命令的用法。

二、实验内容

视图

1. 在STUDENT库中以“student”表为基础,建立一个名为“V_经济管理系学生”的视图(注:经济管理系的系部代码为“02”)。在使用该视图时,将显示“student”表中的所有字段。

USE STUDENT

GO

IF EXISTS(SELECT name FROM sysobjects

WHERE name=' V_经济管理系学生' AND type='V')

DROP view V_经济管理系学生

GO

CREATE VIEW V_经济管理系学生

AS

select * from student

where sdept='02'

GO

2. 使用视图“V_经济管理系学生”查询经济管理系学生的信息。

Select * from V_经济管理系学生

3. 在查询分析器中使用更改视图的命令将视图“V_经济管理系学生”更名为“V_经管系男生”。

sp_rename V_经济管理系学生V_经管系男生

4. 修改“V_经管系男生”视图的内容。视图修改后,在使用该视图时,将得到经济管理系所有“男”学生的信息。

ALTER VIEW V_经管系男生

AS

SELECT * FROM student

where sdept='02' and sex='男'

GO

5. 删除视图“V_经管系男生”。

DROP VIEW V_经济管理系男生

使用存储过程

(1)使用STUDENT数据库中的学生表student、课程信息表Course、选课成绩表Sc,创建一个带参数的存储过程: cjjicx。该存储过程的作用是:当任意输入一个学生的姓名时,将从三个表中返回该学生的学号、选修的课程名称和课程成绩。

USE STUDENT

GO

IF EXISTS(SELECT name FROM sysobjects

WHERE name='cjjicx' AND type='P')

DROP procedure cjjicx

GO

create procedure cjjicx

@sname char(8)

as

select sno,cname,grade from student,course,sc

where student.sno=sc.sno and o=o and sname=@sname

go

(2)执行cjjicx存储过程,查询“刘永辉”的学号、选修课程和课程成绩。excute cijicx @ sname =‘刘永辉’

(3)使用系统存储过程sp_helptext查看存储过程cjjicx的文本信息。Sp_helptext cijicx

(4)使用STUDENT数据库中的学生表,为其创建一个加密的存储过程—jmxs。该存储过程的作用是:当执行该存储过程时,将返回计算机系学生的所有

信息。

(5)执行jmxs存储过程,查看计算机系学生的情况。

(6)删除jmxs存储过程。

Drop procedure jmxs

使用触发器

(1)在student数据库中建立一个名为insert_teacher的INSERT触发器,存储在teacher表中。该触发器的作用是:当用户向teacher表中插入记录时,如果插入了在teacher表中没有的系别类别,则提示用户不能插入记录,否则提示记录插入成功。

USE student

GO

IF EXISTS(SELECT name FROM sysobjects

WHERE name='insert_teacher' AND type='TR')

DROP TRIGGER insert_teacher

GO

CREATE TRIGGER insert_teacher

ON teacher

AFTER insert

AS

IF (SELECT 系别FROM inserted) not in(SELECT DISTINCT系别FROM teacher)

BEGIN

PRINT ‘YOU CAN NOT INSERT THIS RECORD’

ROLLBACK

END

ELSE

PRINT ‘INSERT FINISHED’

GO

(2)为student数据库中的teacher表创建一个名为dele_teacher的DELETE 触发器,该触发器的作用是禁止删除teacher表中的记录。

USE student

GO

IF EXISTS(SELECT name FROM sysobjects

WHERE name='dele_teacher' AND type='TR')

DROP TRIGGER dele_teacher

GO

CREATE TRIGGER dele_teacher

ON teacher

INSTEAD OF DELETE

AS

PRINT ‘YOU CAN NOT DELETE RECORDS’

GO

相关文档
最新文档