当前位置:网站首页>【数据库和SQL学习笔记】8.SQL中的视图(view)
【数据库和SQL学习笔记】8.SQL中的视图(view)
2022-08-05 05:15:00 【takedachia】
工具:SQL Server 2019 Express
操作系统:Windows 10
用到的数据库备份: teaching.bak
回顾一下表结构:
t_student (S#, Sname, Sex, Age, Major)
t_teacher (T#, Tname, Age, Title)
t_course (C#, Cname, T#)
t_student_course (S#, C#, Score)
视图(view)
我们在平时工作中,把数据库的数据呈现给用户,就需要简化用户的数据观点。
我们可以把分散在多张表中的数据,通过视图View定义在一起,这样用户就不必输入一些复杂的查询语句,只需要针对视图做简单查询即可。
这样可以更好地适应不同用户对数据的需求;同时这样为用户划定了访问数据的范围,有利于数据的保密。
视图是是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
创建视图(create view)
创建视图:
create view student_male
as select Sname, Cname, Score
from t_student, t_student_course, t_course
where t_student.S#=t_student_course.S# and t_student_course.C#=t_course.C#
and Sex='男'
执行后,可在对象资源管理器中打开数据库下的视图,可找到我们创建的视图:
我们可以指定显示的列名:
create view student_male_detail(Name, Course, Score)
as select Sname, Cname, Score
from t_student, t_student_course, t_course
where t_student.S#=t_student_course.S# and t_student_course.C#=t_course.C#
and Sex='男'
创建后,我们选择该视图,右键点选“选择前1000行”就可以看到信息了。
修改视图(alter view)
比如新增一列:
alter view student_male_detail
as select t_student.S#, Sname, Cname, Score
from t_student, t_student_course, t_course
where t_student.S#=t_student_course.S# and t_student_course.C#=t_course.C#
and Sex='男'
效果:
删除视图(drop view)
删除 student_male_detail 视图
drop view student_male_detail
效果:
如何使用视图
创建视图后,就可以直接当作一张表来使用。
可直接使用from子句。
例1:查询所有男生的平均分:
select avg(Score)
from student_male
效果:
如果我们不利用视图,查询就变成:
select avg(Score)
from t_student, t_student_course
where t_student.S#=t_student_course.S# and Sex='男'
所以利用视图可以简化查询。
例2:查询每一名男生的考试成绩平均分:
边栏推荐
- Lecture 5 Using pytorch to implement linear regression
- day8字典作业
- In Opencv, imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY) error: error:!_src.empty() in function 'cv::cvtColor'
- el-table鼠标移入表格改变显示背景色
- 数据库期末考试,选择、判断、填空题汇总
- 【NFT网站】教你制作开发NFT预售网站官网Mint作品
- 学习总结week3_4类与对象
- npm搭建本地服务器,直接运行build后的目录
- 第5讲 使用pytorch实现线性回归
- Flink EventTime和Watermarks案例分析
猜你喜欢
随机推荐
AWS 常用服务
vscode要安装的插件
Service
In Opencv, imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY) error: error:!_src.empty() in function 'cv::cvtColor'
浅谈Servlet生命周期
Flink Table API 和 SQL之概述
SSL 证书签发详细攻略
el-table,el-table-column,selection,获取多选选中的数据
【Reading】Long-term update
vscode+pytorch使用经验记录(个人记录+不定时更新)
数据库实验五 备份与恢复
day8字典作业
day12函数进阶作业
spark-DataFrame数据插入mysql性能优化
flink on yarn 集群模式启动报错及解决方案汇总
学习总结week3_1函数
Distributed and Clustered
小白一枚各位大牛轻虐虐
基于Flink CDC实现实时数据采集(二)-Source接口实现
[Remember 1] June 29, 2022 Brother and brother double pain