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

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

  后来想到用视图可以解决多个表的复杂关系,但是另外一张表是不同数据库的,是否依然能进行操作,经过测试之 后,居然可以将不同数据库中的两张表进行建立视图关系,从而视图就是一个虚拟的表,我们将需要查询的不同数据库中的表或者相同数据库中的表,放到一起,然 后选择需要的字段,重新建立一个新的虚表,然后这个视图就可以作为一个新的表,进行操作。这样就为我们提供了很多方便。

  视图是一个续表,是从一个或者多个表或视图倒出来的表,其结构和数据时建立在对表的查询基础上的。

  视图的优点有:

  1、视图可以让用户我们选择某些特定的数据和或者特定的任务,而那些不需要的或者无用的数据可以不再视图中显示。

  2、视图大大的简化了对数据库的操作,可以通过视图操作进行对表的操作。

  3、视图可以让不同的用户以不同的方式看到不同或者相同的数据集,相当方便

  4、在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但是表的结构变化对应用程序的产生不良的影响,而使用视图可以重新组织数据,从而使外模式保持不变,原有的应用程序可以通过视图来重载数据。

  5、视图提供了一个简单而有效的安全机制。

  视图的缺点:

  如果该视图处理的数据量非常大,那么就给sql数据库带来了很多压力,执行速度相对来说比较慢,不如存储过程,所以如果可以用存储过程实现的,优先用存储过程创建视图主要创建方式:

  1、用sql server管理平台创建视图

  2、用Transact-sql语句中的create view命令来创建视图

  3、利用sql sever管理平台的视图模板来创建视图

  创建视图的时候要注意:

  1、只能在当前数据库中创建视图,在视图中最多只能引用1024例,视图中记录数目先知只有其基表中的记录数决定。

  2、如果视图引用的基表或者视图被删除,该视图不能再被使用,知道创建新的基表或者视图

  3、如果视图中某一列是函数、数学表达式、常量或者来自多个表中的列名相同,则必须为列定义名称。

  4、不能再视图上创建索引,不能再规则、默认、触发器中引用视图

  5、当通过视图查询数据时,sql server要检查以确保语句中涉及的所有数据库对象存在,每个数据库对象在语句的上下文中有效,而且数据修改语句不能违反数据完整性规则。

  6、视图的名称必须遵循标示符的规则,且对每个用户必须是唯一的,此外,该名称不得与该用户有任何相同名称的表 这是建立的视图,其中TeacherInfo是从另外一个数据库中添加进来的。

  以下是通过视图查询出来的数据表“select * from QueryWorkInfoByFaculty”

  关于SQL Server数据库用视图来处理复杂的数据查询关系的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-23 03:55:04

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

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

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

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

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

jsp从sql server数据库中获得的dateTime类型的数据能否直接相减

问题描述 jsp从sql server数据库中获得的dateTime类型的数据能否直接相减 我想获得两个日期之间相差的天数,最好能精确到分,过路的大侠指点一下吧! 解决方案 java从数据库读到的是java.sql.Date,java.sql.Date继承于java.util.Date.java.util.Date有个方法getTime(),返回从格林威治时间1970年1月1日00:00:00到该Date对象的时间的毫秒数.你把两个Date对象的getTime()相减再除以(60×1000)就是

SQL Server 2012使用Offset/Fetch Next实现分页数据查询

在Sql Server 2012之前,实现分页主要是使用ROW_NUMBER(),在SQL Server2012,可以使用Offset ...Rows  Fetch Next ... Rows only的方式去实现分页数据查询. select [column1] ,[column2] ... ,[columnN] from [tableName] order by [columnM] offset (pageIndex-1)*pageSize rows fetch next pageSize r

SQL Server中用索引视图查看性能状况

在SQL Server中,视图是一个保存的T-SQL查询.视图定义由SQL Server保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全.但是,它并不占用数据库的任何空间.实际上,在你查询它之前,视图并不做任何事情. 索引视图 在SQL Server 2000和2005中,你能够给视图增加索引.但是,如果视图只是一个保存在数据库中的查询定义,在运行前没有自己的数据,你如何给那个定义建立一个索引呢?嗯,这比较麻烦. 索引视图是一个已被物化或保存在数据库中的视图.当基本表更新时,给视

SQL server数据库用户映射到登陆用户

    最近有朋友的SQL server数据库意外中枪,几经周折,数据将数据库恢复到新环境.恢复后在数据库级别有用户名而实例级别则无相应的登陆用户.这在SQL server数据库中是一个比较普遍的情形.本文描述的是即是对这些孤立的账户通过系统过程sp_change_users_login来建立其映射关系. 1.sp_change_users_login的功能及其限制  使用 sp_change_users_login 将当前数据库中的数据库用户链接到 SQL Server 登录名.  如果用户登

浅析SQL Server数据库中的伪列以及伪列的含义

原文:浅析SQL Server数据库中的伪列以及伪列的含义   本文出处:http://www.cnblogs.com/wy123/p/6833116.html      SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个常识,对此不作具体详细阐述.这里主要是提到的RowId引起了一点思考.那么,这个RowId是个什么玩意?能不能更加直观一点来看看

SQL Server数据库中伪列及伪列的含义详解

SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个常识,对此不作具体详细阐述. 这里主要是提到的RowId引起了一点思考. 那么,这个RowId是个什么玩意?能不能更加直观一点来看看RowId的信息?代表什么含义?这个当然也是可以的. Oracle中的表中有一个伪列的概念,就是在查询表的时候加上select rowid,* from Table,会

通过 SQL Server 2005 索引视图提高性能

本文介绍了 SQL Server 2005 Enterprise Edition 中经过改进的索引视图功能.文中对索引视图进行了说明介绍,并讨论了可通过该功能改善性能的一些具体情况 一.索引视图 多年以来,Microsoft SQL Server 一直支持创建称为视图的虚拟表.通常,这些视图的主要作用是: • 提供一种安全机制,将用户限制到一个或多个基表的某个数据子集中. • 提供一种机制,允许开发人员自定义用户通过逻辑方式查看存储在基表中的数据的方式. 通过 SQL Server 2000,S