什么时候以及为什么有些人决定他们需要在他们的数据库中创建一个视图?为什么不运行一个普通的存储过程或选择?
当前回答
为了安全性:仅允许每个用户通过包含用户或用户组有权查看的特定数据的一小组视图访问数据库,限制用户对其他数据的访问。
查询和结构的简单性:视图可以从多个表中提取数据并呈现单个表,简化信息并将多表查询转换为视图的单表查询,它为用户提供数据库结构的特定视图,将数据库呈现为特定用户或用户组的一组虚拟表。
为了创建一致的数据库结构:即使底层源表发生了更改,视图也会显示一致的、未更改的数据库结构映像。
其他回答
当我只运行查询时,我喜欢在存储过程上使用视图。视图还可以简化安全性,可用于简化对多个表的插入/更新,并可用于快照/物化数据(运行长时间运行的查询,并保持结果缓存)。
我使用物化视图来执行不需要实时保持准确的查询。
视图是查询的封装。转换为视图的查询往往比较复杂,因此将它们保存为视图以供重用是有好处的。
在对遗留数据库进行报告时,视图可能是天赐之物。特别是,您可以使用有意义的表名,而不是神秘的字母名(其中两个字母是常见的前缀!),或者充满缩写的列名,我确信这在当时是有意义的。
可以把它看作重构数据库模式。
我们创建view来限制或严格访问表中的所有行/列。如果所有者希望只有特定或有限的行/列需要共享,那么他将使用这些列创建一个视图。
推荐文章
- 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
- 查询JSON类型内的数组元素
- 确定记录是否存在的最快方法
- 获得PostgreSQL数据库中当前连接数的正确查询
- 在SQL选择语句Order By 1的目的是什么?
- MySQL数据库表中的最大记录数
- 从现有模式生成表关系图(SQL Server)
- 我如何循环通过一组记录在SQL Server?
- HyperLogLog算法是如何工作的?
- 数据库和模式的区别
- 如何在SQL Server中一次更改多个列
- 如何从命令行通过mysql运行一个查询?
- 外键约束可能导致循环或多条级联路径?
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- 当恢复sql时,psql无效命令\N