乱谈SQL Server数据库视图

数据库里存储着大量的数据,但是为了保证数据的安全也为了方便,并不是所有用户的都可浏览所有数据。为此SQL Server里用权限、角色、视图来解决这一系列问题。本篇博客我先介绍视图。

  概念:视图是从一个或多个关联表中派生出的一个虚拟表,换句话说就是以一个或多个表中的部分数据组成的虚拟“表”。

  特点:

  一、分割数据,简化视点:即通过SELECT和WHERE语句来选择你关心的数据,而去除无关的数据。

  二、简化操作:视图可以避免对表的访问和存取操作,同时视图是一个很好的查询窗口。

  三、保护数据:针对用户创建视图,自动屏蔽权限外的数据。

  四、为数据重构提供一定的逻辑独立性:在关系型数据库中数据重构是不可避免的,最常见的是垂直分割为两个表,那么由于表中的数据类型和值并没有改变,所以只要稍微改动视图的定义既可以满足变更之后的表

  五、自动更新:在数据库结构不变的情况下,如果基表中的数据改变,会被自动的反应到视图中

  疑问:对于视图是一个对象,又是“虚拟表”,还具有自动更新的特点,引发了我对视图存储的思考:视图是对象说明视图创建后即被实例化,那么它应该是实际存在于数据库中的,它也确实存在。但是它是虚拟表又怎么解释呢?首先,它只能是以结果集的方式存储,每次打开就打开结果集,但是这样的话如何自动更新;或者是以T-SQL 语句才方式存储,每次打开便执行一次语句,这样就可以解释自动更新了,但问题是视图可能很大每次执行浪费资源。所以这两种存储方式并不科学。

  我查了一些资料,也咨询了学长、学姐,结果是没有结果。但经过讨论我认为,视图应该是以结果集的形式来存储的,同时存在着一种类似于触发器的机制来时时更新视图里的内容。这样的话视图的性质和特点就都可以解释了。当然这只是我的推断,不是事实,写出来只是想寻找答案。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-27 22:14:14

乱谈SQL Server数据库视图的相关文章

浅谈SQL SERVER数据库口令的脆弱性_漏洞研究

跟踪了一下SQL SERVER数据库服务器的登录过程发现口令计算是非常脆弱的SQL SERVER数据库的口令脆弱体现两方面 1.网络登陆时候的口令加密算法 2.数据库存储的口令加密算法. 下面就分别讲述 1.网络登陆时候的口令加密算法 SQL SERVER网络加密的口令一直都非常脆弱网上有很多写出来的对照表但是都没有具体的算法处理实际上跟踪一下SQL SERVER的登陆过程,就很容易获取其解密的算法好吧我们还是演示一下汇编流程 登录类型的TDS包跳转到4126a4处执行     004DE72E

浅谈SQL Server数据库中系统表的作用

(一)系统表:存储SQL所有的系统信息.存储有关数据库服务中的元数据所谓元数据即(比如数据服务器有哪些用户数据库.数据库服务器有哪些登陆账号,数据库中都有哪些表,每个表都有哪些字段 每个数据库有哪些存储过程.视图等等的数据),系统表一般sys开头. (二)了解数据库中系统表,可以编写sql语句或编程的时候用到.以下场景使用到了系统表 1.在创建数据库的时候选判断数据库是否存在:创建数据库中对象(表.视图.存储过程.索引等)是否存在,存在返回,不存在则执行创建语句. 2.批量删除数据库中对象,比如

浅谈SQL Server数据库并发测试方法

1. 利用测试工具模拟多个最终用户进行并发测试; 这种测试方法的缺点:最终用户往往并不是直接连接到数据库上,而是要经过一个和多个中间服务程序,所以并不能保证访问数据库时还是并发.其次,这种测试方法需要等到客户端程序.服务端程序全部完成才能进行; 2. 利用测试工具编写脚本,直接连接数据库进行并发测试; 这种方法可以有效的保证并发操作,而且在数据库访问程序完成即可测试,可以大大缩短测试时间,而且测试效果更好. 下面通过一个演示程序,演示使用Robot使用第二种测试方法进行数据库的并发测试. 第一步

简析SQL Server数据库用视图来处理复杂的数据查询关系_MsSql

SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个页面是对单个老师和整个学院老师的工作量查询,这个操作设计到了三个本数据库中的表和一个不同数据库中的一个教师信息表,如果用普通的SQL语句是非常难实现的,由于我刚开始做的视频播放系统,数据库的表相对比较少,没有涉及到这么复杂的处理关系,刚开始感觉很难. 后来想到用视图可以解决多个表的复杂关系,但是另外一张表是不同数据库的,是否依然能进行操作,经过测试之后,居然

SQL Server数据库用视图来处理复杂的数据查询关系

SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个页面是对单个老师和整个学院老师的工作量查询,这个操作设计到了三个本数据库中的表和一个不同数据库中的一个教师信息表,如果用普通的SQL语句是非常难实现的,由于我刚开始做的视频播放系统,数据库的表相对比较少,没有涉及到这么复杂的处理关系,刚开始感觉很难. 后来想到用视图可以解决多个表的复杂关系,但是另外一张表是不同数据库的,是否依然能进行操作,经过测试之 后,居

简析SQL Server数据库用视图来处理复杂的数据查询关系

SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个页面是对单个老师和整个学院老师的工作量查询,这个操作设计到了三个本数据库中的表和一个不同数据库中的一个教师信息表,如果用普通的SQL语句是非常难实现的,由于我刚开始做的视频播放系统,数据库的表相对比较少,没有涉及到这么复杂的处理关系,刚开始感觉很难. 后来想到用视图可以解决多个表的复杂关系,但是另外一张表是不同数据库的,是否依然能进行操作,经过测试之后,居然

浅谈SQL Server中的快照

原文:浅谈SQL Server中的快照 简介     数据库快照,正如其名称所示那样,是数据库在某一时间点的视图.是SQL Server在2005之后的版本引入的特性.快照的应用场景比较多,但快照设计最开始的目的是为了报表服务.比如我需要出2011的资产负债表,这需要数据保持在2011年12月31日零点时的状态,则利用快照可以实现这一点.快照还可以和镜像结合来达到读写分离的目的.下面我们来看什么是快照.   什么是快照     数据库快照是 SQL Server 数据库(源数据库)的只读静态视图

谈一谈SQL Server中的执行计划缓存(上)

原文:谈一谈SQL Server中的执行计划缓存(上) 简介     我们平时所写的SQL语句本质只是获取数据的逻辑,而不是获取数据的物理路径.当我们写的SQL语句传到SQL Server的时候,查询分析器会将语句依次进行解析(Parse).绑定(Bind).查询优化(Optimization,有时候也被称为简化).执行(Execution).除去执行步骤外,前三个步骤之后就生成了执行计划,也就是SQL Server按照该计划获取物理数据方式,最后执行步骤按照执行计划执行查询从而获得结果.但查询

强烈推荐:SQL Server数据库操作实用技巧锦集

server|sql|技巧|数据|数据库 本文主要概括安装时提示有挂起的操作.收缩数据库.压缩数据库.转移数据库给新用户以已存在用户权限.检查备份集.修复数据库等操作技巧. 1.挂起操作 在安装SQL或SP补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法: 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager删除PendingFileRenameOperations. 2.收缩数据库