实验九 视图的操作

实验九 视图的操作
实验内容
1、	请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询:
答:代码如下:
--请为三建工程项目建立一个供应情况的视图,
--包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
create view SAN_JIAN
as
select SNO,PNO,QTY
from SPJ,J
where SPJ.JNO=J.JNO and JNAME='三建';
 
(1)	找出三建工程项目使用的各种零件代码及其数量。
答:代码如下:
--找出三建工程项目使用的各种零件代码及其数量。
select distinct PNO,QTY
from SAN_JIAN;

(2)	找出供应商S1的供应情况。
答:代码如下:
--找出供应商S1的供应情况。
select *
from SAN_JIAN
where SNO='S1';

2、	打开“实验四”中的学生-课程数据库(S_T),完成以下实验。
建立信息系学生的视图(用with check option子句),

--建立信息系学生的视图(用with check option子句)
create view IS_student
as
select Sno,Sname,Sage,Sdept
from Student
where Sdept='IS'
with check option;
 
(1)	并向该视图中插入类似以下的语句:
insert into is_student1 (sno,sname,sage) 
values (‘20051100101’,‘王一’,20)
 
 
是否合理?如何更改?
答:不合理。
1、Student表中的Ssex列设置了不允许尾空值,而插入视图中的对应数据没有Ssex的数据。
2、在创建视图时指定了witch check option关键字,这也就是说,更新后的每一条数据仍然要满足创建视图时指定的where条件,所以我们这里发生了错误。
更改代码如下:
--先设置Student表中的Ssex属性允许为空
alter table Student
alter column Ssex char(2) null;
--再插入带有Sdept属性的值的数据
insert into IS_student(Sno,Sname,Sage,Sdept)
values ('20051100101','王一',20,'IS');
 
(2)	建立信息系选修了001号课程的学生的视图 。
答:代码如下:
--插入数据
insert into Course(Cno,Cname)
values('001','面向对象程序设计');
insert into SC
values
('20051100101','001',88),
('202215125','001',91);

--建立信息系选修了001号课程的学生的视图 。
create view IS_s1(Sno,Sname,Grade)
as
select Student.Sno,Sname,SC.Grade
from Student,SC
where Sdept='IS' and Student.Sno=SC.Sno and SC.Cno='001';	

(3)	在第(2)题创建的视图的基础上建立信息系选修了1号课程且成绩在90分以上的学生的视图。
答:代码如下:
--在第(2)题创建的视图的基础上建立信息系选修了1号课程且成绩在90分以上的学生的视图。
create view IS_s2
as
select * from IS_s1
where Grade>=90;
 
(4)	试图删除“选修”表(SC表),看看第(2)题与第(3)题建立的视图是否存在。
答:代码如下:
--试图删除“选修”表(SC表),看看第(2)题与第(3)题建立的视图是否存在。
drop table SC;
视图已不复存在。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值