什么时候以及为什么有些人决定他们需要在他们的数据库中创建一个视图?为什么不运行一个普通的存储过程或选择?
当前回答
以下是两个常见的原因:
你可以用它来保证安全。在主表上不授予权限,创建限制列或行访问的视图,并向用户授予查看视图的权限。
你可以为了方便使用它。将视图中经常使用的一些表连接在一起。这可以使查询保持一致并更容易。
其他回答
当我想要查看一个表的快照和/或视图(以只读方式)时
关于视图的一件奇怪的事情是,它们被Microsoft Access视为表:当您使用ODBC将Microsoft Access前端附加到SQL数据库时,您将在可用表列表中看到表和视图。因此,如果你在MS Access中准备复杂的报告,你可以让SQL服务器来做连接和查询,这大大简化了你的工作。在Excel中准备查询也是如此。
我正在创建xxx,映射主表(如Products表)和引用表(如ProductType或ProductDescriptionByLanguage)之间的所有关系。这将创建一个视图,允许我检索产品及其从外键转换到描述的所有详细信息。 然后我可以使用ORM创建对象,轻松地构建网格、组合框等。
几个原因: 如果您有复杂的连接,有时最好有一个视图,这样任何访问都会有正确的连接,开发人员不必记住他们可能需要的所有表。通常情况下,这可能用于财务应用程序,其中所有财务报告都基于同一组数据,这是非常重要的。
如果你有用户,你想限制他们可以看到的记录,你可以使用一个视图,只给他们访问视图,而不是底层表,然后查询视图
Crystal报表似乎更喜欢使用视图来存储过程,因此编写大量报表的人倾向于使用大量视图
视图在重构数据库时也非常有用。您通常可以通过创建一个视图来隐藏更改,以便旧代码看不到它。阅读重构数据库的相关内容,了解它是如何工作的,因为这是一种非常强大的重构方式。
我们创建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