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

news/2024/11/20 8:40:47/

视图的定义与使用

  • 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 as	select st_id,st_name,cs_id,cs_name,sc_gradefrom student,course,select_coursewhere st_id = sc_id and cs_id = sc_num
go

image-20201130190810344

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

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

image-20201130192336334

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_id
go

image-20201130192420833

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

image-20201130193107856

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

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

image-20201130193535030

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_num
go

image-20201130193909690



2. 使用视图

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

-- 查询以上所建的视图结果
select * from V_SC_G
select * from V_YEAR
select * from V_AVG_S_G
select * from V_AVG_C_G
select * from V_S
select * from V_SC

image-20201130200523444

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

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

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

-- 查询科目成绩大于平均成绩的学生学号、课程号、成绩和平均成绩
select st_id,cno,sc_grade,avg_grade
from V_AVG_C_G,V_SC
where cs_id = cno
and sc_grade > avg_grade
image-20201130200557558

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

-- 查询2000年出生的学生学号和姓名
select V_S.st_id,st_name
from V_S,V_YEAR
where V_S.st_id = V_YEAR.st_id
and birth = 2000
image-20201130200614215

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

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

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

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

http://www.ppmy.cn/news/605671.html

相关文章

一本读懂BERT(实践篇)重点

目录 一、什么是BERT? 二、BERT安装 三、预训练模型 四、运行Fine-Tuning 五、数据读取源码阅读 (一) DataProcessor (二) MrpcProcessor 六、分词源码阅读 (一)FullTokenizer &#…

LeetCode简单题之圆形赛道上经过次数最多的扇区

题目 给你一个整数 n 和一个整数数组 rounds 。有一条圆形赛道由 n 个扇区组成,扇区编号从 1 到 n 。现将在这条赛道上举办一场马拉松比赛,该马拉松全程由 m 个阶段组成。其中,第 i 个阶段将会从扇区 rounds[i - 1] 开始,到扇区 …

LeetCode简单题之最小绝对差

题目 给你个整数数组 arr,其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 示例 1: 输入:arr [4,2,1,3] 输出:[[1,2],[2,3],[3,4]] 示例 2: 输入:arr […

合肥工业大学—SQL Server数据库实验十:用户及其权限管理

用户及其权限管理1. 创建登录名Mylog及密码2. 创建用户user2关联登录名3. 创建角色role14. 对用户user2及角色role1授权5. 验证用户授权6. 收回用户权限1. 创建登录名Mylog及密码 create login Mylog with password1234562. 创建用户user2关联登录名 -- 创建一个EDUC数据库用…

LeetCode简单题之二叉树中第二小的节点

题目 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。 更正式地说,即 root.val min(root.left.val, root.right…

pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

squeeze的用法主要就是对数据的维度进行压缩或者解压。 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的数去掉第一个维数为一的维度之后就变…

VS Code搭建C/C++开发环境超详细教程

目录一、下载配置MinGW1. 下载解压 MinGW2. 配置环境变量3. 测试是否配置成功二、安装 C/C 插件三、第一个程序四、相关插件推荐1. Visual Studio IntelliCode2. Code Runner一、下载配置MinGW 1. 下载解压 MinGW 下载地址:https://sourceforge.net/projects/mingw…

SWT Image 和ImageData的相互转换

ImageData 转 Image //arcPiclocate图片绝对路径 ImageData data new ImageData(arcPiclocate); Image image1 new Image(null, data); //或者 Display display Display.getCurrent(); Image image1 new Image(display , data); Image 转 ImageData 使用getImageData()方…