前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库中的视图简介

数据库中的视图简介

作者头像
用户3880999
发布2023-04-13 17:04:11
6280
发布2023-04-13 17:04:11
举报

为什么要用视图

我们在从数据库中查询某些数据时通常是使用 select * from TableName where condition,例如从公告表中查询2018年5月6号发布的公告信息并且只想让用户看到公告的标题、公告的内容、公告的发布日期,我们通常查询的SQL语句为select AnnounceTitle, AnnounceContent, PublishDate from Announce where PublishDate = '2018-05-06',查询结果如下

而每次要查询2018年5月6号发布的公告信息都要执行一次 select AnnounceTitle, AnnounceContent, PublishDate from Announce where PublishDate = '2018-05-06'未免也太麻烦了,为了解决这个问题就可以用视图,首先可以将查询2018年5月6号发布的公告信息的SQL语句创建为一个视图,创建方式如下:

代码语言:javascript
复制
create view selectInfo as select AnnounceTitle, AnnounceContent, PublishDate from Announce where publishDate = '2018-05-06'

然后只需要执行select * from selectInfo就可以查询2018年5月6号发布的公告信息,而不用每次都写那么长的查询语句

什么是视图

根据W3school上的介绍可知视图是基于 SQL 语句的结果集的可视化的表,也就是说视图就是一张表,既能是表,那么对表的一切操作也可以用于视图,所以视图可以实现曾删改查

更新视图

下面的SQL语句更新了之前创建的视图selectInfo,现在selectInfo视图查询的结构中会显示公告标题和公告内容

代码语言:javascript
复制
alter view selectInfo as select AnnounceTitle, AnnounceContent from Announce where publishDate = '2018-05-06'

删除视图

前面介绍了更新视图操作,这里介绍删除视图操作,执行下面的SQL语句可以删除之前创建的selectInfo视图

代码语言:javascript
复制
drop view selectInfo

通过视图更新表中的数据

这里以前面创建的视图selectInfo为例,在前面我们已经创建了一个selectInfo视图关联了2018年5月6日发布的公告信息,那么我们能否通过selectInfo视图更新2018年5月6日发布的公告信息呢,答案时可以的,通过执行下面的SQL语句可以实现通过视图将2018年5月6日发布的公告信息中的公告标题由“推荐书籍列表”改为“新书推荐”

代码语言:javascript
复制
update selectInfo set AnnounceTitle = '新书推荐'

执行一下select * from selectInfo可以看到通过视图关联的虚拟表中的数据已经更新了

再执行一次select * from Announce可以看到公告表中的数据也更新了,所以我们实现了通过视图更新表中的数据

视图的分类

在视图中我们可以将视图分成系统视图、绑定视图及索引视图

系统视图

从名字上看就可以知道系统视图表示存放一些数据库系统的信息,以SQL Server为例,打开SQL Server数据库进入任何一个用户创建的数据库下打开视图选项,在视图选项下面会看到一个系统视图选项,打开系统视图选项后会看到如下图所示的一堆由 SQl Server 数据库自己创建的视图,这个就是系统视图

系统视图的一个简单运用

假定我们创建了一个数据库名称为db_readmine的数据库,在db_readmine数据库中创建了很多表,db_readmine数据库的表结构如下图所示

如果我忘记了AnnounceTitle字段在那张表中,想知道AnnounceTitle字段位于,其中那张表中,就可以使用一个系统视图INFORMATION_SCHEMA.COLUMNS ,使用方式如下,其中COLUMN_NAME后面跟的是你需要查找的字段的字段名,TABLE_CATALOG 后面跟的是你在哪个数据库中查找该字段

代码语言:javascript
复制
select * from INFORMATION_SCHEMA.COLUMNS 
where COLUMN_NAME = 'AnnounceTitle' and TABLE_CATALOG = 'db_readmine'

这条SQL语句的执行结果如下,下面的结果中的TABLE_CATALOG表示查找的字段所在的数据库,TABLE_SCHEMA表示的是表的架构,TABLE_NAME表示字段所在的表,COLUMN_NAME表示当前查询的字段,通过这个查询结果可知AnnounceTitle是Announce表的字段

查看Announce表后也可以从Announce表中找到AnnounceTitle字段

参考资料

meishadevs欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。 转载请注明: 【文章转载自meishadevs:数据库中的视图简介

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要用视图
  • 什么是视图
    • 更新视图
      • 删除视图
        • 通过视图更新表中的数据
        • 视图的分类
          • 系统视图
            • 系统视图的一个简单运用
          • 参考资料
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档