数据库视图降低最终用户体验的复杂性,并限制用户对数据库表中包含的数据的访问。基本上,视图使用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命令从数据库中删除视图很简单。例如,要删除全职员工的视图,请使用以下命令:
删除全日制;
观点与物化视图
视图是一个虚表。一个物化视图与磁盘写入并访问的同一视图,就像它是一个表自己的右图。
当您针对视图运行查询时,源源视图的辅助查询执行实时执行那些结果返回原始主查询。如果您的观点非常复杂,或者您的主要查询需要大量的哈希连接在多个表和视图中,您的主要查询将以乌龟的速度执行。
物化视图可以提高查询执行速度,因为它是一个写入磁盘的预编译查询,因此执行起来就像表一样快。但是,物化视图的效果只和刷新它们的事件过程一样好。从长远来看,通过良好的维护,物化视图可以加快速度,并且在延迟刷新时间上有一个小小的折衷,而不需要一堆可能休眠的影子表,这些影子表要么占用磁盘空间,要么不适当地获取他人的查询。
感谢您让我们知道!
告诉我们为什么!