在过去的几天里,我开始阅读大量有关SQLServer的文档,并“发现”了视图的概念。
我已经知道了,但只是因为在讨论SQLServer时使用了它们。
所以,如果有人能帮我,这就是我对观点的理解:
1) 视图以物理方式保存在数据库中
2) 您只能将一个视图的访问权授予一个人,而不授予他访问整个数据库的权限
3) 您可以编写一个新的查询,并在视图中使用join子句
这三点是我理解的与保存在磁盘上的普通.sql文件的区别。
但是,除了这三个区别之外,如果数据库访问没有问题,为什么我要创建一个视图而不是保存一个查询呢?
我真的不明白为什么很多人谈论视图,特别是sql server报表,我想提高我的知识。
提前谢谢!
2条答案
按热度按时间ajsxfq5m1#
视图是存储的查询;它不包含任何数据。例如,如果您从数据库导出它(这里谈论的是oracle),您将看到您导出了0行。
因此,您和任何其他有权访问它的用户都可以使用它。如果用于创建视图的查询存储在您的硬盘上,我应该如何使用它(除非您将其发送给我、scott、mick和jenny以及……),然后有人更改了他们的视图,我们将无法获取相同的数据集,尽管我们都是从同一点开始的。
视图可以限制数据访问;您可以允许其他人仅从表中获取一个小列集。或者,如果您连接7个表来创建一个视图并授予
select
特权给其他人,他们不知道背后隐藏着什么,因为他们只看到数据。不过,我不认为很多人谈论观点;也许你现在读到他们的时候会这么想。但是,毫无疑问,它们是有用的。
jqjz2hbq2#
您可以像处理表一样处理视图。例如,如果您有一个名为viewtest的视图。您可以从中选择(select*from viewtest),加入它。它与保存文件有很大的不同。