目录
一.视图
1.1什么是视图?
视图是在计算机科学和数据库管理中使用的术语,用于表示对数据的特定呈现方式或逻辑结构。视图可以看作是从一个或多个表中选择和组织数据的虚拟表。它提供了一种方便的方式来访问和操作数据库中的数据,同时隐藏了底层的数据结构和复杂的查询逻辑。
视图可以根据应用程序的需求来定义,可以包含特定的列、行、过滤条件和排序规则。它可以用于简化复杂的查询操作,提供更直观和易于理解的数据呈现方式,同时可以保护敏感数据并限制用户访问的权限。
视图在数据库管理系统中有多种用途,例如:
1. 简化复杂查询:通过定义视图,可以将复杂的查询逻辑封装到一个简单的接口中,使用户能够更轻松地执行查询操作。
2. 数据安全性:视图可以隐藏底层表中的敏感数据,并限制用户对数据的访问权限。通过授予用户对视图的访问权限,可以确保只有经过授权的用户能够访问受限的数据。
3. 数据完整性:视图可以用于实现数据的完整性约束。通过定义视图,并在其中添加必要的约束条件,可以确保数据满足特定的业务规则和约束,从而提高数据的质量和一致性。
总而言之,视图是一种对数据库中数据的抽象和逻辑组织方式,它提供了一种简化数据访问和操作的方式,同时增强了数据的安全性和完整性。
1.2视图的定义
视图就是从一个或多个表中,导出来的表,是一个虚拟存在的表。视图就像一个窗口(数据展示的窗口),通过这个窗口,可以看到系统专门提供的数据(也可以查看到数据表的全部数据),使用视图就可以不用看到数据表中的所有数据,而是只想得到所需的数据。
在数据库中,只存放了视图的定义,并没有存放视图的数据,数据还是存储在原来的表里,视图的数据是依赖原来表中的数据的,所以原来的表的数据发生了改变,那么显示的视图的数据也会跟着改变,例如向数据表中插入数据,那么在查看视图的时候,会发现视图中也被插入了同样的数据。
视图在外观上和表很相似,但是它不需要实际上的物理存储,视图实际上是由预定义的查询形式的表所组成的。
视图可以包含表的全部或者部分记录,也可以由一个表或者多个表来创建,当我们创建一个视图的时候,实际上是在数据库里执行了SELECT语句,SELECT语句包含了字段名称、函数、运算符,来给用户显示数据。
在数据库中,视图的使用方式与表的使用方式一致,我们可以像操作表一样去操作视图,或者去获取数据。
一般来说,我们只是利用视图来查询数据,不会通过视图来操作数据。
1.3使用视图的理由是什么?
1.安全性。一般是这样做的:创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定。这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。2.查询性能提高。
3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大。那么可以使用虚拟表的形式达到少修改的效果。这是在实际开发中比较有用的
例子:假如因为某种需要,a表与b表需要进行合并起来组成一个新的表c。最后a表与b表都不会存在了。而由于原来程序中编
写sql分别是基于a表与b表查询的,这就意味着需要重新编写大量的sql(改成向c表去操作数据)。而通过视图就可以做到不修
改。定义两个视图名字还是原来的表名a和b。a、b视图完成从c表中取出内容。
说明:使用这样的解决方式,基于对视图的细节了解越详细越好。因为使用视图还是与使用表的语法上没区别。比如视图名a
,那么查询还是"select * from a"。
4.复杂的查询需求。可以进行问题分解,然后将创建多个视图获取数据。将视图联合起来就能得到需要的结果了。
视图的工作机制:当调用视图的时候,才会执行视图中的sql,进行取数据操作。视图的内容没有存储,而是在视图被引用的时候才派生出数据。这样不会占用空间,由于是即时引用,视图的内容总是与真实表的内容是一致的。
视图这样设计有什么好处?节省空间,内容是总是一致的话,那么我们不需要维护视图的内容,维护好真实表的内容,就可以保证视图的完整性了。
1.4什么情况下使用视图?
视图(view)是在数据库中用于呈现数据的一种方式。以下是一些情况下使用视图的例子:
数据隐藏:视图可以用于隐藏敏感或保密的数据。通过创建只包含特定列或特定行的视图,可以限制用户访问敏感信息。
数据转换:视图可以用于将数据进行重新组织或转换。例如,可以创建一个视图,将多个关联表中的数据合并为一个更容易理解的视图。
数据过滤:视图可以用于过滤数据,以便只显示满足特定条件的行。这对于在大型数据库中查找特定数据非常有用。
简化复杂的查询:通过创建一个包含复杂逻辑的视图,可以简化复杂查询的编写。这可以提高代码的可读性和维护性。
数据聚合:视图可以用于从多个表中聚合和计算数据。这对于生成报表和统计数据非常有用。
注意:视图只是数据库中的一个逻辑概念,并不实际存储数据。它只是在查询时按照定义的方式呈现已有的数据。
1.5视图的语法
可以使用 CREATE VIEW 语句来创建视图。语法格式如下:
CREATE VIEW <视图名> AS <SELECT语句>
语法说明如下:
<视图名>`:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
<SELECT语句>`:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。对于创建视图中的 SELECT 语句的指定存在以下限制:
用户除了拥有 CREATE VIEW 权限外,还具有操作中涉及的基础表和其他视图的相关权限。
SELECT 语句不能引用系统或用户变量。
SELECT 语句不能包含 FROM 子句中的子查询。
SELECT 语句不能引用预处理语句参数。
1.6视图与数据表的区别
视图(View)和数据表(Table)是数据库中两个不同的概念,它们有一些明显的区别:
1. 存储方式:数据表是物理存储在数据库中的实体,而视图只是一个逻辑查询结果的虚拟表,并不真正存储数据。
</