SQL VIEW(视图)介绍
1、引入
假设你的应用对天气记录和城市位置的组合列表特别感兴趣,而你又不想每次键入这些查询。
那么你可以在这个查询上创建一个视图, 它给这个查询一个名字,你可以像普通表那样引用它。
CREATE VIEW myview ASSELECT city, temp_lo, temp_hi, prcp, date, locationFROM weather, citiesWHERE city = name;SELECT * FROM myview;
自由地运用视图是好的SQL数据库设计的一个关键要素。视图允许我们把表结构的细节封装起来, 这些表可能随你的应用进化而变化,但这些变化却可以隐藏在一个一致的接口后面。
2、视图
数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结果集。一般来说你可以用update,insert,delete等sql语句修改表中的数据,而对视图只能进行select操作。
但是也存在可更新的视图,对于这类视图的update,insert和delete等操作最终会作用于与其相关的表中数据。因此,表是数据库中数据存储的基础,而视图只是为了满足某种查询要求而建立的一个对象。
(1)视图是数据库数据的特定子集。可以禁止所有用户访问数据库表,而要求用户只能通过视图操作数据,这种方法可以保护用户和应用程序不受某些数据库修改的影响。
(2)视图是抽象的,他在使用时,从表里提取出数据,形成虚的表。 不过对他的操作有很多的限制 。
(3)视图是永远不会自己消失的除非你删除它。
视图有时会对提高效率有帮助。临时表几乎是不会对性能有帮助,是资源消耗者。
视图一般随该数据库存放在一起,临时表永远都是在tempdb里的。
(4)视图适合于多表连接浏览时使用。不适合增、删、改。存储过程适合于使用较频繁的SQL语句,这样可以提高执行效率!
3、视图和表的区别和联系
3.1 区别
(1)视图是已经编译好的sql语句,而表不是。
(2)视图没有实际的物理记录,而表有。
(3)表是内容,视图是窗口。
(4)表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。
(5)表是内模式,视图是外模式。
(6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
(7)表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
(8)视图的建立和删除只影响视图本身,不影响对应的基本表。
(9)不能对视图进行update或者insert into操作。
3.2 联系
视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。
一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
4、视图的作用
(1)当一个查询你需要频频的作为子查询使用时,视图可以简化代码,直接调用而不是每次都去重复写这个东西,有点高级语言中的封装的意思吧。
(2)其实视图还有很多其他的用处,比如说你是一个系统的数据库管理员,你需要给他人提供一张表的某两列数据,而不希望他可以看到其他任何数据,这样你就可以给他建一个只有这两列数据的视图,然后把视图公布给他。
特别说明:
每次SELECT视图的时候,视图都会重新计算创建它的规则(sql算法),如果算法复杂,数据量大,就会比较慢,那样每次就很慢了。通常来说直接查询和查询视图是没有什么区别的(sql本身会进行优化),除非是视图嵌套了视图,或者子查询很复杂要计算。而且,表的索引对于视图view来说是无效的,它是全表扫描的。
SQL VIEW(视图)介绍相关推荐
- Microsoft Dynamics server 2015 所有的SQL server 2012 视图 介绍及功能
微软Dynamics 2015 所有的SQL server 2012 视图 介绍及功能 此文章中SQL Server 视图可以为开发者提供帮助,以下部分摘自微软CRM官方安装文件中. Microsof ...
- SQL创建视图(CREATE VIEW)
视图是基于 SELECT 语句的结果集的可视化的表. 什么是视图? 在 SQL 中,一个视图是基于某个 SELECT 语句的结果集的可视化的表. 视图包含行和列,就像一个真实的表.视图中的域就是来自一 ...
- sql server 视图_轻松搜索SQL Server –搜索目录视图
sql server 视图 The need to search through database schema for specific words or phrases is commonplac ...
- 【数据库系统】第一部分 数据库基础(3) 关系数据库标准语言SQL(7) 视图
本文属于「数据库系统学习实践」系列文章之一,这一系列着重于「数据库系统知识的学习与实践」.由于文章内容随时可能发生更新变动,欢迎关注和收藏数据库系统系列文章汇总目录一文以作备忘.需要特别说明的是,为了 ...
- MySQL 进阶 视图 -- 视图介绍、视图CRUD语法、检查选项(CASCADED、LOCAL)、视图的更新、视图作用、视图案例
文章目录 1. 视图 1.1 视图介绍 1.2 语法 1.2.1 创建视图 1.2.2 查询视图 1.2.3 修改视图 1.2.4 删除视图 1.2.5 插入数据说明 1.3 检查选项 1.3.1 C ...
- 通往SQL Server复制的阶梯:一级- SQL服务器复制介绍
链接:http://www.sqlservercentral.com/articles/Stairway+Series/72274/ 文章:Stairway to SQL Server Replica ...
- 数据库VIEW(视图)
视图是基于 SQL 语句的结果集的可视化的表. 视图包括行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 我们能够向视图加入 SQL 函数.WHERE 以及 JOI ...
- 查看mysql view作用_Mysql中View视图的作用
浙江PHP博客分享关于Mysql中使用View视图的作用.很多小伙伴知道视图的作用,却不知道为什么要使用视图以及视图的一些好处是什么,下面浙江一点PHP将详细阐述关于视图的用法以及作用. 作用一: 提 ...
- SQL SERVER视图
SQL SERVER视图 2011-09-29 13:56:14 我来说两句 0 我要投稿 [字体:小 大] 创建视图 创建一个虚拟表,该表以另一种方式表示一个或多个表中的数据.CREA ...
最新文章
- JavaScipt 中的事件循环(event loop),以及微任务 和宏任务的概念
- Python-EEG工具库MNE中文教程(9)-参考电极应用
- symfony开发步骤简述
- vaadin_Vaadin Flow –奇妙的鹿
- Script:Generate A DDL Script For A Table
- VS2015配置Opencv
- 【动态规划】leetcode 53:最大子数组和
- 札记 - PHP/JS/jQuery/MySQL/CSS/正则/Apache
- PS如何调整图片像素大小
- 通过同花顺股票程序化交易接口的止损方法有哪些?
- HTML表格合并行和列
- 计算英文句子中有多少单词?
- Python多线程-手慢无的真相
- bootstrap v3.3.6 版本.table-striped不起作用的问题
- linux默认端口范围是多少?
- java ssl 报错 Received fatal alert: illegal_parameter
- React 官网入门教程 - 井字棋小游戏
- 概率论考点总结类型26 统计中的卡方分布 t分布F分布
- 图像超分辨率重建学习记录(二)----插值法
- 万一 Github不让用了,Gitee同步指南请收好