数据库 实验四 创建视图,使用视图,修改视图

1、创建视图

--***① 将Student Course 和sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G ***
CREATE VIEW V_S_C_G AS
	SELECT Student.sno,sname,course.cno,cname,grade
	FROM Student,SC,course
	WHERE SC.sno = Student.sno AND SC.cno = course.cno
GO

--***② 将各系学生人数,平均年龄定义为视图V_NUM_AVG ***
CREATE VIEW V_NUM_AVG AS
	SELECT sdept,COUNT(*) num,AVG(YEAR(GETDATE()) - YEAR(birthday)) avg_age
	FROM Student
	GROUP BY sdept
GO

--***③ 将student中信管系学生的个人信息定义为视图 V_IS ***
CREATE VIEW V_IS AS
	SELECT *
	FROM Student
	WHERE sdept = '信管'
GO

--***④ 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G ***
CREATE VIEW V_AVG_C_G AS
	SELECT cno,COUNT(*) num,AVG(grade) avg_grade
	FROM SC
	GROUP BY cno
GO

--***⑤ 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G ***
CREATE VIEW V_AVG_S_G AS
	SELECT sno,COUNT(*) num,AVG(grade) avg_grade
	FROM SC
	GROUP BY sno
GO

2、修改视图
重命名用代码我不知道怎么写,如果有知道的可以在评论区说一下,谢谢

--****2. 修改视图 ****
--***在查询分析器中使用更改视图的命令将上面建立的视图“V_IS”更名为“V_MIS” ***

3、使用视图

--****3.使用视图 ****
--***(1)查询平均成绩为90分以上的学生学号、姓名和成绩 ***
SELECT DISTINCT V_AVG_S_G.sno,sname,grade
FROM V_S_C_G,V_AVG_S_G
WHERE V_S_C_G.sno = V_AVG_S_G.sno AND avg_grade > 90

--***(2)查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩***
SELECT DISTINCT V_S_C_G.sno,sname,V_S_C_G.cno,grade
FROM V_S_C_G,V_AVG_C_G
WHERE sno IN(SELECT V_S_C_G.sno
			 FROM V_S_C_G,V_AVG_C_G
			 WHERE grade > avg_grade AND V_S_C_G.cno = V_AVG_C_G.cno
)

--***(3)按系统计各系平均成绩在80分以上的人数,结果按降序排列***
SELECT Student.sdept,COUNT(*)
FROM Student,V_AVG_S_G
WHERE Student.sno = V_AVG_S_G.sno AND avg_grade > 80
GROUP BY sdept
ORDER BY COUNT(*) DESC

4、修改视图

--*** (1)通过视图V_MIS,分别将学号为“1002”和“1004”的学生姓名更改为“1002_MMM”,”1004_MMM” 并查询结果 ***
UPDATE V_MIS
SET sno = '1006_MMM'
WHERE sno = '1006'
UPDATE V_MIS
SET sno = '1017_MMM'
WHERE sno = '1017'


--***(2)通过视图V_MIS,新增加一个学生记录 ('S12','YAN XI',’2001.10.10’,'IS'),并查询结果 ***
INSERT INTO V_MIS(sno,sname,birthday,sdept)
VALUES('S12','YAN XI','2001.10.10','IS')

--***(3)通过视图V_MIS,删除学号为“S12”和“001”的学生信息,并查询结果 ***
DELETE
FROM V_MIS
WHERE sno IN('S12','1001')

--***(4)要通过视图V_MIS,将学号为“1002”的姓名改为“1002_MMM”,是否可以实现?并说明原因 ***
可以,因为原表格中存在学号为 1002 的学生数据

--***(5)要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?并说明原因 ***
不可以,因为原表格中没有平均成绩这一列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xxxandwww

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

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

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

打赏作者

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

抵扣说明:

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

余额充值