当前位置:网站首页>【数据库和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:查询每一名男生的考试成绩平均分:

边栏推荐
猜你喜欢

【MySQL】数据库多表链接的查询方式

Flink HA配置

Thread handler句柄 IntentServvice handlerThread

2022年中总结关键词:裁员、年终奖、晋升、涨薪、疫情

【过一下4】09-10_经典网络解析

Lecture 5 Using pytorch to implement linear regression

SQL(二) —— join窗口函数视图

Convert the paper official seal in the form of a photo into an electronic official seal (no need to download ps)
![[Go through 4] 09-10_Classic network analysis](/img/f2/e6e71869b8ab014cc1eea0537fc2e7.png)
[Go through 4] 09-10_Classic network analysis

Flink Table API 和 SQL之概述
随机推荐
【过一下14】自习室的一天
Flink 状态与容错 ( state 和 Fault Tolerance)
学习总结week2_5
Machine Learning (2) - Machine Learning Fundamentals
JSX基础
IDEA 配置连接数据库报错 Server returns invalid timezone. Need to set ‘serverTimezone‘ property.
【Reading】Long-term update
Database experiment five backup and recovery
门徒Disciples体系:致力于成为“DAO世界”中的集大成者。
Mesos learning
Lecture 2 Linear Model Linear Model
【MySQL】数据库多表链接的查询方式
【零基础开发NFT智能合约】如何使用工具自动生成NFT智能合约带白名单可Mint无需写代码
【过一下15】学习 lstm的一周
Kubernetes常备技能
Web Component-处理数据
大型Web网站高并发架构方案
[Go through 8] Fully Connected Neural Network Video Notes
What are the characteristics of the interface of the physical layer?What does each contain?
【Over 16】Looking back at July