5-6)视图与索引

2023-11-20

视图

视图是一种虚拟的数据表(Virtual table),来源于数据表和其他数据

一、视图概述

1、视图的定义

视图不是真实的表,它是创建于一个或多个表或者视图之上的虚拟表,只定义数据(也可理解为是SQL 语句筛选出来的表)

2、视图的分类

SQL Server 2012 中视图可分为三类

  1. 标准视图
    在数据库中仅保存其定义
  2. 索引视图
    不仅保存其定义,生成的记录也被保存,还可以创建唯一聚集索引。使用索引视图可以加快查询速度,提高视图性能
  3. 分区视图
    将一个或多个数据库中的一组表中的记录抽取且合并,通过使用该视图,可以连接一台或多台服务器成员表中的分区数据,使得这些数据看起来就像来自同一个表。该视图的作用:将大量的记录按地域分开储存使得数据安全和处理性能得到提高。

3、视图的优缺

视图是一种虚表,是从一个或几个基本表(或视图)导出的表;视图只存放视图的定义,不会出现是数据冗余;基表数据发生变化,从视图中查询出的数据也会随之改变。
4. 优点
5. 逻辑数据独立性
6. 简化数据查询
7. 提高安全性
8. 缺点
9. 更多的操作限制。限制在于:因为数据的完整性约束条件限制,视图在增加、修改、删除数据时,会产生更多限制
10. 执行效率差。视图是一个从数据表或其他视图映射出的虚拟表,只有在使用的时候才从数据表导出,执行效率相应比直接访问要差

二、创建视图

用户可以不必在SQL 窗格输入SQL 语句而直接在“条件”窗格中进行查询操作,用户可以不必了解Select 语句就可以实现较为复杂的查询操作

使用T-SQL 语句创建视图

CREATE VIEW <view_name> [(column_name)]
[WITH <ENCRYPTION|SCHEMABINDING|VIEW_METADATA>] AS select_statement
[WITH CHECK OPTION]
语法说明:
11. view_name 表示视图名
12. column_name 表示视图中各个列
13. ENCRYPTION 表示让SQL Server 加密视图的定义。使用该选项,任何用户,包括定义视图的用户都将看不见视图的定义
14. SCHEMABINDING 表示将视图与其依赖的表或视图结构相关联,使用该选项时必须包含所引用的表、视图或用户定义函数的两部分名称(所有者.对象)
注意:
当删除与视图相关联的基表或基视图时,除非该视图已被删除或更改,否则报错。另外,对参与具有关联视图的基表执行ALTER TABLE 语句,又会影响与关联视图的定义,语句运行失败。
15. VIEW_METADATA 表示指定为引用视图的查询请求浏览模式的元数据时SQL SERVER 将向DBLIB 、ODBC 、OLE DB API 返回有关视图的元数据信息,而不是返回基表或其他表
16.
17. select_statement 创建视图的SELECT 语句
18. WITH CHECK OPTION 表示强制视图上执行的所有数据修改语句必须符合SELECT 查询语句设置的准则。通过视图修改行时,WITH CHECK OPTION 可确保修改后,仍可通过视图看到修改的数据

创建视图注意的问题

  1. 命名符合标识符定义规范
  2. 不仅在表中可以创建视图,在引用视图的存储过程和视图基础上创建视图
  3. 不能在视图上定义全文索引
  4. 视图不能有DEFAULT 属性
  5. 视图上不能有AFTER 属性,但可以有INSTEAD OF 触发器
  6. 定义视图的查询语句不能有以下关键字ORDER BY、COMPUTE、COMPUTE BY 、INTO 子句
  7. 不能在临时表上创建视图,也不能创建临时视图
  8. 必须指定视图中每个列的名字的情况:视图中任意一列是来自于一个算数表达式、函数或常数

三、使用视图

视图虽然是一个虚拟表,但SQL SERVER 允许像使用基本表一样,使用视图插入、更新和删除记录。当然,视图所修改的数据实际上都是对基本表的数据所做的修改。使用视图修改记录需要注意一些限制条件:

  1. 不能同时修改基于多个表创建的视图。一条INSERT 语句只能向一个基本表中添加数据,使用UPDATE 更新的列必须同属于一个表,DELETE 同样不能
  2. 不能修改含有计算字段的视图,包括基于算术表达式或聚合函数的字段创建的视图。也就是说,如果创建视图时含有聚合函数、算术表达式、DISTINCT 、GROUP BY 、HAVING 子句,视图就只能查询,不能修改
  3. 没有基本表主键的视图不能插入记录,但可以执行UPDATE 和DELETE 操作。执行INSERT 命令时,视图必须包含基本表的主键,否则插入失败
  4. 视图中进行插入、更新、和删除操作仍然要遵守基本表的完整性约束条件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

5-6)视图与索引 的相关文章

  • 学习DOM

    DOM的概述 DOM document object model 文档对象模型 顾名思义他就是用于操作对应的文档的 也就是操作你写的html文档 DOM是一个遵从文档流的语句 所以他是同步机制 DOM的分类 document dom操作中最
  • mybatis异常:nested exception is org.apache.ibatis.builder.BuilderException

    这里我使用的是Mybatis plus然后报的异常 接口如下 xml如下 本来以为一切正常却忽略了接收参数的实体参数名字 也就是接受参数名和xml当中的参数名不一致导致异常 其次是接参里面并没有这几个参数 以至于他也会报这种错误的
  • Python GUI案例之看图猜成语开发(第二篇)

    Python GUI案例之看图猜成语 第二篇 前言 看图猜成语小程序开发 第二篇 游戏选择模式页面 游戏训练模式页面 Python GUI案例之看图猜成语开发 第一篇 Python GUI案例之看图猜成语开发 第三篇 Python GUI案

随机推荐

  • QString转const char*

    QString str hello world 转成const char const char arr str toStdString c str const char arr str toLatin1 constData toUtf8 转
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • devtools安装_R语言入门之R包的安装

    R语言是一个强大的数据分析工具 其强大之处在于有各种各样的R包帮助其实现各种各样的功能 通常来说 R包的安装主要有四种方法 包括 1 从R语言官网上直接下载相关R包并安装 2 从Bioconductor上下载R包并安装 3 从Github上
  • 华为OD机试真题2022(JavaScript)

    华为OD机试真题题库已换 华为OD机试真题2023 JavaScript 本栏有100 道算法题 并提供正确解法 JavaScript 和解题思路 保证都是华为机试真题 非练习题 大概率会考到原题 大家有什么问题可以留言探讨和交流 华为机试
  • Tomcat 系统架构与设计模式之工作原理篇

    本文以 Tomcat 5 为基础 也兼顾最新的 Tomcat 6 和 Tomcat 4 Tomcat 的基本设计思路和架构是具有一定连续性的 Tomcat 总体结构 Tomcat 的结构很复杂 但是 Tomcat 也非常的模块化 找到了 T
  • MySQL 5.5.62下载、安装与卸载详细步骤

    目录 下载地址 安装过程 测试安装 卸载过程 下载地址 安装包我传到了CSDN 下载不需要积分 是从官网下载上传的 可以放心使用 CSDN下载地址 mysql 5 5 62 winx64 msi 官网下载地址 地址 安装过程 双击安装包打开
  • 计算机网络笔记Part2 物理层(Physical Layer)

    计算机网络笔记Part2 物理层 Physical Layer 一 物理层基本概念 二 数据通信 1 一个数据通信例子 2 相关术语 3 三种通讯方式 4 两种数据传输方式 5 码元 Symbol 波特 Baud 速率 带宽 Band Wi
  • 创建自定义的archetype(项目模板)

    一 archetype简介 Archetype是一个Maven项目的模板工具包 它定义了一类项目的基本架构 Archetype为开发人员提供了创建Maven项目的模板 同时它也可以根据已有的Maven项目生成参数化的模板 通过archety
  • G1垃圾回收器简介及回收过程

    一 什么是G1 同CMS一样 G1也是关注停顿时间 不过它是可控的 它被设计用来取代CMS 因为它是空间整理所以没有CMS那么严重的空间碎片问题 同时提供可控的停顿时间 特性 1 G1不同于之前的那些垃圾收集器分为连续的年轻代 老年代和永久
  • leetcode-跳跃游戏系列

    1 跳跃游戏 leetcode 55 跳跃游戏 1 问题描述 给定一个非负整数数组 n u m s nums nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例 1
  • Python-抓取小红书文章的心路历程

    在这之前从未了解过小红书 然后习惯性地百度了一下 发现是这样的 研究发现 这玩意没有pc端的接口 也就是说没办法直接从pc端抓取数据 好吧 放弃 不过pc端还是有用处的 打开社区精选 点开几个推送详情页看了看 发现所有的文章url都是htt
  • form表单中使用fileUpLoad上传文件

    在最近的项目中 需要对用户的头像就行上传 这里了解到使用appche的 大家可自行到mvn库搜索jar包名进行下载 这里需要注意的是代码中对参数的读取 正常情况下我么使用getparameter方法进行读取表单数据 但是因为在form中我们
  • 【Neo4j】第 3 章:使用 Pure Cypher 为您的业务赋能

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • A Gentle Introduction to Graph Neural Networks(一篇GNN的博客)

    图神经网络 读A Gentle Introduction to Graph Neural Networks笔记 1 直观上的理解 layer后面的标号代表是第几层 要注意每一层都是由比它更深的层相互影响的 比如layer2他可能只有laye
  • 关于专栏基于WordPress的手把手建站教程

    如何建立一个自己的个人博客 建站需要什么基础知识 建站的过程是什么 其实建站真的很容易 WordPress已经很成熟了 基本不需要什么基础知识 如何建站这也是我写的比较用心的一个教程 因此准备写一个手把手教你建站系列教程 本教程基于系统Ub
  • mac 和华为手机互传文件

    参考博客 华为手机传输文件到Mac电脑上 简书 应用场景 1 把资料从手机上的数据备份到电脑上或反向操作 2 需要把资料传给朋友的时候 有两种方式 第一种是通过数据线 传输速度快 但是需要安装软件和使用数据线 具体流程如下 1 先准备一个双
  • 异常检测主要方法总结

    最近对预测及异常检测进行了一些研究和学习 把所学东西做一个汇总整理 欢迎交流拍砖 侵权删 目录 一 时间序列概念 二 时间序列异常检测 三 时序类型 四 异常类型 4 1 点异常 4 2 上下文异常 4 3 集合异常 五 重要概念 5 1
  • 人脸识别趟坑历程

    1 人脸识别概述 人脸识别 是基于人的脸部特征信息进行身份识别的一种生物识别技术 用摄像机或摄像头采集含有人脸的图像或视频流 并自动在图像中检测和跟踪人脸 进而对检测到的人脸进行脸部的一系列相关技术 其中技术包括图像采集 特征定位 身份的确
  • jmeter3.3调用数据库写存储过程注意点

    1 数据库配置页面 2 创建存储过程要保证库里没有同名 本来这句drop语句放在创建存储过程里面的 发现会导致不会执行存储过程 一定要分开写 query type选择 update statement 3 创建存储过程 variable n
  • 5-6)视图与索引

    文章目录 视图 一 视图概述 1 视图的定义 2 视图的分类 3 视图的优缺 二 创建视图 使用T SQL 语句创建视图 创建视图注意的问题 三 使用视图 视图 视图是一种虚拟的数据表 Virtual table 来源于数据表和其他数据 一