视图是一种常用的数据库对象,将查询的结果以虚拟表形式存储在数据中,并不在数据中以存储数据集的形式存在。视图的结果和内容是建立在对表的查询基础之上的,和表一样,包括行和列,这些行、列数据都来源于所引用的表,并且是在引用视图过程中动态生成的。
视图中的内容是由查询定义来的,并且视图和查询都是通过SQL语句定义的,他们有着许多相同之处,但又很多不同之处。视图和查询的区别如下:
1. 存储:视图存储为数据库设计的一部分,查询则不是。视图可以禁止所有用户访问数据库中的基表,查询要求用户只能通过视图操作数据。这种方法可以包含用户和应用程序不受某些数据库修改的影响,同样也可以包含数据库表的安全性。
2. 排序:查询的结果都可以拍下,而是他只有包括TOP子句时才能进行排序。
3. 加密:视图可以加密,但查询不能加密。
视图是一个虚拟的数据表,可以是多个表的查询结果,视图的优点包括以下几个方面。
1. 简化操作
视图可以是比较复杂的多表关联查询,每一次执行相同的查询时,只需要一条简单的查询视图语句就可以解决复杂查询的问题。视图简化了操作的复杂性,使初学者不必掌握复杂的查询语句,就可以实现多个数据表间的复杂查询工作。对一个视图的访问要比对多个表的访问容易得多,大大简化了用户的操作。
2. 建立浅谈和后台缓冲
在数据库开发过程中,可以通过调用视图来实现查询功能。通过对视图的调用,在数据表结果更改时,只要视图的输出列不发生变化,就可以避免对应用程序的修改。大大提高了数据库的开发效率,同时降低了开发成本。
3. 合并分割数据
通过视图可以对表中数据进行水平分割或垂直分割。用户而言对一个表或多个表中的数据列进行有选择的查看,简化数据结构;可以通过在食堂中使用WHERE子句水平分割数据,限制表中显示的数据。
4. 提高安全性
视图可以作为一种安全机制。通过视图可以限定用户查看和修改的数据表和列,其他数据信息只能是有访问权限的用户才能查看和修改。例如,对于工资表中信息,一般用过只能看到表中的姓名、办公室、工作电话和部门等,只有复杂相关操作的人才有权限查看或修改。如果某一用户想要访问视图的结果集,必须被授予访问权限,视图所引用的表访问权限与视图权限的设置互不影响。在数据库开发设计时,不同级别用户共用一个数据库时应用得极其广泛。