视图的应用

定义视图


SET NOCOUNT ON
GO

USE JX
GO
--*****1、创建视图WY_Student,用于查询“外国语”系学生的基本信息,且基于该视图的数据更新只能限制在“外国语”系*****
----------------------BEGIN-------------------
create view WY_Student 
as
select * from 
student 
where sdept='外国语'



----------------------END-----------------------
GO
SELECT * FROM WY_Student
GO
--*****2、创建视图SS_Student,用于查询学生的姓名、学号和总学分信息,要求属性列中文显示*****
----------------------BEGIN-------------------
create view SS_Student 
as 
select sname 姓名,sno 学号,total 总学分
from  student




----------------------END-----------------------
GO
SELECT * FROM SS_Student
GO
--*****3、创建视图XS_XK,用于查询每个同学的选课信息,包括学号、姓名、课程号、课程名和成绩,并用中文列出各属性名*****
----------------------BEGIN-------------------

create view XS_XK
as 
select student.sno 学号,student.sname 姓名,sc.cno 课程号,course.cname 课程名,sc.grade 成绩
from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno


----------------------END-----------------------
GO
SELECT * FROM XS_XK
GO
--*****4、基于视图WY_Student和SC,创建视图WY_XK,用于查询“外国语”系学生的选课情况*****
----------------------BEGIN-------------------
create view wy_xk
as 
select sc.Sno ,Sname,Ssex,Sbirth,Sdept,Total ,Cno,Tno,Grade
from WY_Student,sc
where WY_Student.sno=sc.sno



----------------------END-----------------------
GO
SELECT * FROM WY_XK
GO
--*****5、创建视图XS_ZCJ,用于查询选修了课程的学生的总成绩,包括学号、姓名和总成绩。
----------------------BEGIN-------------------
create view XS_ZCJ
as 
select  student.sno 学号,sname 姓名,sum(sc.grade) 总成绩

from student
join sc on student.sno=sc.sno
group by student.sno,student.sname




----------------------END-----------------------
GO
SELECT * FROM XS_ZCJ
GO

--*****6、创建统计教师职称种类及人数的统计视图ZC_ZL*****
----------------------BEGIN-------------------
create view ZC_ZL
as
select  tprof 职称种类, count(*) 人数
from teacher
group by tprof



----------------------END-----------------------
GO
SELECT * FROM ZC_ZL
GO
--*****7、修改视图WY_XK为查询选修了课程的学生的学号、姓名和所选课程的平均成绩,要求平均成绩保留两位小数*****
----------------------BEGIN-------------------
alter view wy_xk (学号,姓名,平均成绩)
as
select student.sno,student.sname, cast(avg(sc.grade) as decimal(10,2)) as 平均成绩

from student
inner join sc on student.sno=sc.sno
group by student.sno,student.sname


----------------------END-----------------------
GO
SELECT * FROM wy_xk
GO
--*****8、删除视图XS_XK*****
----------------------BEGIN-------------------
drop view XS_XK

----------------------END-----------------------
GO
SELECT * FROM XS_XK
GO

基于视图的操作

SET NOCOUNT ON
GO
USE JX
GO

--*****1、查询视图WY_Student,然后使用INSERT INTO 语句更新WY_Student视图用于插入('20015','张策壹','2004-09-09','物联网工程')和('20016','张策贰','2004-10-09','外国语'),再次查询该视图以及相关基表,检查执行结果是否正确(注意:本题只需要提交两条插入语句)*****
------------------------------------BEGIN----------------------------
--(1)插入('20015','张策壹','2004-09-09','物联网工程')
insert into WY_Student (sno,sname,sbirth,sdept)
values('20015','张策壹','2004-09-09','物联网工程')


----------
GO 
--(2)插入('20016','张策贰','2004-10-09','外国语')
insert into WY_Student (sno,sname,sbirth,sdept)
values ('20016','张策贰','2004-10-09','外国语')

----------------------------------- -END----------------------------
GO
SELECT * FROM WY_Student
GO
--*****2、修改视图WY_Student中刚插入的学生姓名为‘张三’,然后再次查询该视图和相关基表,检查更新结果(注意:本题只需要提交修改语句)*****
------------------------------------BEGIN----------------------------
update WY_Student  set sname='张三' where sname='张策贰'


----------------------------------- -END----------------------------
GO
SELECT * FROM WY_Student WHERE Sname='张三'
SELECT * FROM Student WHERE Sname='张三'
GO
--*****3、删除视图WY_Student中'张三'的信息,然后查询该视图和相关基本表数据(注意:本题只需要提交删除语句)*****
------------------------------------BEGIN----------------------------
delete from WY_Student
where sname='张三'


----------------------------------- -END----------------------------
GO
SELECT * FROM WY_Student WHERE Sname='张三'
SELECT * FROM Student WHERE Sname='张三'
GO

--*****4、已有视图WY_XK,属性为Sno、Sname和avg_grade,请将每个学生的平均成绩avg_grade都增加3分,查看执行是否成功(注意:本题只需要提交修改语句)*****
------------------------------------BEGIN----------------------------
update  wy_xk 
set avg_grade=avg_grade+3



----------------------------------- -END----------------------------
GO

posted on 2025-05-20 21:04  swj2529411658  阅读(28)  评论(0)    收藏  举报

导航