300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 合肥工业大学—SQL Server数据库实验九:视图的定义与使用

合肥工业大学—SQL Server数据库实验九:视图的定义与使用

时间:2024-05-19 06:07:49

相关推荐

合肥工业大学—SQL Server数据库实验九:视图的定义与使用

视图的定义与使用

1. 定义视图2. 使用视图

1. 定义视图

在EDUC数据库中,已Student、Course 和SC表为基础完成一下视图定义:

1) 定义视图V_SC_G:该视图包含Student、 Course 和SC表中学生的学号、姓名、课程号、课程名和成绩

-- 定义视图V_SC_G:该视图包含Student、 Course 和SC表中学生的学号、姓名、课程号、课程名和成绩create view V_SC_G asselect st_id,st_name,cs_id,cs_name,sc_gradefrom student,course,select_coursewhere st_id = sc_id and cs_id = sc_numgo

2) 定义一个反映学生出生年份的视图V_YEAR,该视图要求使用系统函数来获取当前日期及转换

-- 定义一个反映学生出生年份的视图V_YEAR,该视图要求使用系统函数来获取当前日期及转换create view V_YEAR(st_id,birth) asselect st_id,YEAR(GETDATE())-datediff(year,st_born,getdate()) from studentgo

3) 定义视图V_AVG_S_G:该视图将反映学生选修课程的门数及平均成绩

-- 定义视图V_AVG_S_G:该视图将反映学生选修课程的门数及平均成绩;create view V_AVG_S_G(sno,count,avg_grade) asselect sc_id,count(*),avg(sc_grade) from select_coursegroup by sc_idgo

4) 定义视图V_AVG_C_G:该视图将统计各门课程的选修人数及平均成绩

-- 定义视图V_AVG_C_G:该视图将统计各门课程的选修人数及平均成绩create view V_AVG_C_G(cno,count,avg_grade) asselect sc_num,count(*),avg(sc_grade) from select_course group by sc_num go

5)定义一个学生表的行列子集视图V_S:该视图包含学生的学号、姓名、专业号

-- 定义一个学生表的行列子集视图V_S:该视图包含学生的学号、姓名、专业号create view V_S asselect st_id,st_name,tc_mj from studentgo

6)定义一个视图V_SC:该视图包含学号、姓名、课程号、成绩

-- 定义一个视图V_SC:该视图包含学号、姓名、课程号、成绩create view V_SC asselect st_id,st_name,cs_id,sc_gradefrom student,course,select_coursewhere st_id = sc_id and cs_id = sc_numgo

2. 使用视图

1)查询以上所建的视图结果

-- 查询以上所建的视图结果select * from V_SC_Gselect * from V_YEARselect * from V_AVG_S_Gselect * from V_AVG_C_Gselect * from V_Sselect * from V_SC

2) 查询平均成绩为90分及以上的学生学号、姓名和成绩

-- 查询平均成绩为90分及以上的学生学号、姓名和成绩select distinct st_id,st_name,avg_grade from V_SC_G,V_AVG_S_Gwhere sno = st_idand avg_grade>90

3) 查询科目成绩大于平均成绩的学生学号、课程号、成绩和平均成绩

-- 查询科目成绩大于平均成绩的学生学号、课程号、成绩和平均成绩select st_id,cno,sc_grade,avg_gradefrom V_AVG_C_G,V_SCwhere cs_id = cnoand sc_grade > avg_grade

4) 查询2000年出生的学生学号和姓名

-- 查询2000年出生的学生学号和姓名select V_S.st_id,st_namefrom V_S,V_YEARwhere V_S.st_id = V_YEAR.st_idand birth = 2000

5) 将学生“钟嗣儒”的专业号改为“22” (数据视实际数据而定)

-- 将学生“钟嗣儒”的专业号改为“22”update V_Sset tc_mj = 22where st_name='钟嗣儒'

6) 利用视图V_SC将学号为“217876”、课程号为“100”的成绩改为85分

-- 利用视图V_SC将学号为“217876”、课程号为“100”的成绩改为85分update V_SCset sc_grade = 85where st_id = 217876

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。