在SQL中控制数据访问

数据库视图降低最终用户体验的复杂性,并限制用户对数据库表中包含的数据的访问。基本上,视图使用a的结果数据库查询动态填充虚拟数据库表的内容。

为什么使用视图?

通过视图提供有两个主要原因,可以通过视图访问数据,而不是提供对数据库表的直接访问:

  • 视图提供简单,粒度的安全性。使用视图来限制允许用户在表中看到的数据。例如,如果您有员工表并希望向某些用户提供访问全职员工的记录,则可以创建仅包含这些记录的视图。这比替代方案(创建和维护阴影表)更容易,并确保数据的完整性。
  • 视图简化了用户体验。视图隐藏无需查看它们的最终用户数据库表的复杂详细信息。如果用户转储视图的内容,则不会看到视图未选择的表列,并且它们可能无法理解。这可以保护它们免受由众不当的列,唯一标识符和唯一标识符引起的混乱表键

创建一个视图

创建视图非常简单:只需创建一个包含您希望强制执行的限制的查询并将其放在Create View命令中。这是一般语法:

创建视图视图名称为
<查询>

例如,要创建全职员工的视图,请发出以下命令:

创建View Fulltime
选择first_name,last_name,employee_id
来自员工
在状态=“英尺”;

修改视图

更改视图的内容使用与视图的创建完全相同的语法,但使用ALTER VIEW命令而不是CREATE VIEW命令。例如,要将限制添加到完整时间视图,该视图将员工的电话号码添加到结果,请发出以下命令:

ALTER VIEW Fulltime As
选择first_name,last_name,employee_id,电话
来自员工
在状态=“英尺”;

删除视图

使用Drop View命令从数据库中删除视图很简单。例如,要删除全职员工的视图,请使用以下命令:

删除全日制;

观点与物化视图

视图是一个虚表。一个物化视图与磁盘写入并访问的同一视图,就像它是一个表自己的右图。

当您针对视图运行查询时,源源视图的辅助查询执行实时执行那些结果返回原始主查询。如果您的观点非常复杂,或者您的主要查询需要大量的哈希连接在多个表和视图中,您的主要查询将以乌龟的速度执行。

物化视图可以提高查询执行速度,因为它是一个写入磁盘的预编译查询,因此执行起来就像表一样快。但是,物化视图的效果只和刷新它们的事件过程一样好。从长远来看,通过良好的维护,物化视图可以加快速度,并且在延迟刷新时间上有一个小小的折衷,而不需要一堆可能休眠的影子表,这些影子表要么占用磁盘空间,要么不适当地获取他人的查询。

这个页面有用吗?