当前位置: 首页 > news >正文

数据库(4)--视图的定义和使用

一、学习目的

加深对视图的理解,熟练视图的定义、查看、修改等操作

二、实验环境

 Windows 11

Sql server2019

三、实验内容 

学生(学号,年龄,性别,系名)

课程(课号,课名,学分,学时)

选课(学号,课号,成绩)

(1)根据上面基本表的信息定义视图显示每门课的课名、选课人数、平均成绩

(2)观察基本表数据变化时,视图中数据的变化。

(3)利用视图,查询平均成绩最高的学生。

四、SOL代码

(1)根据上面基本表的信息定义视图显示每门课的课名、选课人数、平均成绩

go
create view S_c(课名,选课人数,平均成绩)
as
select cname 课名,count(*) 选课人数,avg(grade) 平均成绩
from ce, xe where ce.cnum=xe.cnum
group by ce.cname
go
select * from S_c
go

(2)观察基本表数据变化时,视图中数据的变化

select * from S_c

 (3)利用视图,查询平均成绩最高的学生

create view S_grade(学生姓名,平均成绩)
as
select stu.sname,avg(grade) as'平均成绩'
from stu,xe
where stu.sno= xe.sno
group by stu.sname
go
select *from S_grade
go
select 学生姓名 from S_grade
where 平均成绩=(select max(平均成绩) from S_grade)

 五、结果分析

SQL语言用CREATE VIEW命令建立视图,其格式为:
CREATE VIEW <视图名> [(<列名> [,<列名>] …)]
AS<子查询>
[WITH CHECK OPTION] ;
其中,子查询可以是任意的SELECT语句,是否可以含有ORDER BY子句和DISTINCT短语,则取决于具体系统的实现;WITH CHECK OPTION表示对视图进行UPDATE、INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。

删除视图语句:DROP VIEW <视图名>[CASCADE];同时还有插入(INSERT),修改(UPDATE)数据。

六、小结

 组成视图的属性列名或者全部省略或者全部指定,没有第三种选择。如果省略了视图的各介属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成。但在下列三种情况下必须明确指定组成视图的所有列名:
(1)某个目标列不是单纯的属性名,而是聚集函数或列表达式:

(2)多表连接时选出了几个同名列作为视图的字段:

(3)需要在视图中为某个列启用新的更合适的名字。

http://www.lryc.cn/news/7522.html

相关文章:

  • pandas表格并表(累加合并)
  • 汽车直营模式下OTD全流程
  • 如何在 Canvas 上实现图形拾取?
  • 适用于媒体行业的管理数据解决方案—— StorageGRID Webscale
  • Springboot+ElasticSearch构建博客检索系统-学习笔记01
  • vue3+element-plus el-descriptions 详情组件二次封装(vue3项目)
  • No.14新一代信息技术
  • 微信小程序开发(五)小程序代码组成2
  • 关于tensorboard --logdir=logs的报错解决办法记录
  • em,rem,px,rpx,vw,vh的区别与使用
  • Vue+node.js医院预约挂号信息管理系统vscode
  • Java真的不难(五十四)RabbitMQ的入门及使用
  • Unity | Script Hot Reload
  • 3|射频识别技术|第五讲:数据通信和编码技术|第九章:编码与调制|重点理解掌握传输介质中的有线传输介质
  • 【遇见青山】基于Redis的Feed流实现案例
  • 【芯片前端】一文搞定|寄存器组织生成与uvm ral_model环境全流程
  • Leetcode力扣秋招刷题路-0061
  • xilinx srio ip学习笔记之axistream接口
  • 轨迹误差评估指标[APE/RPE]和EVO
  • uni-app 消息推送功能UniPush
  • 面试题(二十六)场景应用
  • 密码技术在车联网安全中的应用与挑战
  • 富媒体数据管理解决方案:简化、优化、自动化
  • QT入门Input Widgets之QFontComboBox、QTextEdit、QPlainTextEdit、QDial、QKeySequenceEdit
  • Java企业级开发学习笔记
  • 【算法基础】(一)基础算法 ---高精度
  • 电源口防雷器电路设计方案
  • 【零基础入门前端系列】—表单(七)
  • Linux安装python3
  • 怎么通过中级职称有窍门吗?