西北工业大学数据库实验报告4

《数据库原理》实验报告 题目: 实验四:视图与索引 学号 姓名 班级 10011402 日期 16.10.18 2014302692 孟玉军 一. 实验内容、步骤以及结果 1. 在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且

是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。(5分)

2. 用两种不同的SQL语句创建第五版教材第三章 第9题中要求的视图(视图名:V_SPJ)

(10分,每种方法5分)。 1).

create view v_spj as

select sno,pno,qty from J,SPJ

where j.jno=spj.jno and jname='三建' 2).

create view view_2 as

select sno,pno,qty from SPJ

where jno =(select jno from j where jname ='三建')

3. 用SQL语句完成第五版教材第三章 第9题中的视图查询(10分,每小题5分)。

1).

select pno,sum(qty) as sum_qty from v_spj group by pno 结果:

2).

select pno,qty from v_spj where sno='S1'

4. 用SQL语句完成视图的数据更新。(15分,每题5分) (1) 给视图V_SPJ中增加一条数据。

提示:

- SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO

为NULL,所以视图中没有该条数据。

- SPJ表中JNO不能为空时,可以使用instead of触发器实现。 ① :jno允许为空时:

insert into v_spj

values('S4','P3',100) 结果改变:

select * from v_spj

没有出现刚刚插入的那条数据 ② :jno不能为空时:

Jno不能为NULL 设立触发器:

create trigger instead_of_insert on v_spj instead of insert as begin

declare @sno char(10) declare @pno char (10) declare @qty int

select @sno=sno,@pno=pno,@qty=qty from inserted

insert into SPJ values(@sno,@pno,'J1',@qty) end

执行语句:

insert into v_spj

values ('S5','P4',100) 结果:

(2) 修改视图V_SPJ中的任意一条数据的供应数量。

update v_spj set qty=300

where sno='S1'and pno='P1'

修改前:

修改后:

(3) 删除视图V_SPJ中的任意一条数据(注意所创建视图可以视图消解时,才能正常删

除,否则会删除失败;也可以考虑用instead of触发器实现)。 创建instead of触发器:

create trigger instead_of_delete on v_spj

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4