数据库视图(view)简介

[广告]京东京造 K2蓝牙双模机械键盘 背光84键有线/蓝牙无线双模


视图是数据库的用户使用数据库的观点。例如,对于一个学校,其学生的情况存于数据库的一个或多个表中,而作为学校的不同职能部门,所关心的学生数据的内容是不同的。即使是同样的数据,也可能有不同的操作要求,于是就可以根据他们的不同需求,在物理的数据库上定义他们对数据库所要求的数据结构,这种根据用户观点所定义的数据结构就是视图。

成语“盲人摸象”的,通常寓意是不能只看到事物的一部分,而应看全局,那样才能全面和真实的了解事物的情况 。而在数据库当中,不同的的角色(权限)、业务需求对数据的要求是不一样了。


视图定义

视图是逻辑表(虚拟表),由存储在数据库中的SELECT语句定义。它由行和列组成,与基表完全一样。视图也可以像基表那样用于SELECT、UPDATE、DELETE和INSERT语句。因此,视图有理由使用与表一样的命名规范。另外,对于任何返回一个表的东西,如别名、同义词、派生表、表值函数等,都应当使用同样的命名规范。

视图与表

视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

视图的优点

视图是从一个或多个表(或视图)导出的表。视图一经定义以后,就可以像表一样被查询、修改、删除和更新。使用视图有下列优点:

  1. 为用户集中数据,简化用户的数据查询和处理。有时用户所需要的数据分散在多个表中,定义视图可将它们集中在一起,从而方便用户的数据查询和处理。
  2. 屏蔽数据库的复杂性。用户不必了解复杂的数据库中的表结构,并且数据库表的更改也不影响用户对数据库的使用。
  3. 简化用户权限的管理。只需授予用户使用视图的权限,而不必指定用户只能使用表的特定列,也增加了安全性。
  4. 便于数据共享。各用户不必都定义和存储自己所需的数据,可共享数据库的数据,这样同样的数据只需存储一次。
  5. 可以重新组织数据以便输出到其他应用程序中。

创建视图

使用CREATE VIEW语句创建视图,语法格式:

CREATE [OR REPLACE] VIEW 视图名 [(列名列表)]
AS select语句
[WITH CHECK OPTION]

列名列表:要想为视图的列定义明确的名称,可使用可选的列名列表子句,列出由逗号隔开的列名。列名列表中的名称数目必须等于SELECT语句检索的列数。若使用与源表或视图中相同的列名时可以省略列名列表。

WITH CHECK OPTION:指出在可更新视图上所进行的修改都要符合select语句所指定的限制条件,这样可以确保数据修改后,仍可通过视图看到修改的数据。

查看视图列表

在MySQL中查看表命令比较简单: show tables;

而查看视图列表需要以下命令:

SHOW FULL TABLES IN database_name WHERE TABLE_TYPE LIKE ‘VIEW’;

参考资料

How to get a list of MySQL views?

码中人 微信公众号

关注微信公众号

码中人 微信公众号