SQL中的视图和表之间的区别


Answers:


196

一个表包含数据,一个视图只是一个SELECT已保存在数据库中的语句(或多或少,取决于您的数据库)。

视图的优点是它可以联接来自多个表的数据,从而创建一个新的视图。假设您有一个包含薪水的数据库,并且需要对该数据库进行一些复杂的统计查询。

您可以将查询另存为视图,而不是一直将复杂的查询一直发送到数据库。 SELECT * FROM view


11
因此,视图实际上是由select语句创建的表。视图被存储并可以访问,因此用该信息创建新表而不是视图会有所不同。
Doug Hauf 2014年

23
您可以将视图视为可以重复的“保存的选择语句”。这不是一张桌子。即使某些数据库允许创建在其下具有真实表的视图,它实际上只是SELECT返回结果的语句。
亚伦·迪古拉

1
注意事项:一些数据库系统列表视图以及“显示表”上的表;命令。
德克斯特(Dexter)

1
@ShwetabhShekhar这取决于您的数据库和视图类型。以最简单的形式,数据库将执行SQL,就好像您刚刚发送了整个程序一样。在这种情况下,您只需保存一次又一次发送许多字节。一些数据库可以执行查询并将结果存储在(实际)表中。然后,您需要以某种方式解决您提到的问题。查看数据库文档该如何做。
亚伦·迪古拉

1
@FoxDeploy是的,因为该视图没有任何帮助。有用的方案是具有有限权限的视图或从同一数据库或另一个数据库(远程表)中的另一个架构中选择一个表的视图。
亚伦·迪古拉

34

表: 表是用于在RDBMS中存储数据和信息的初步存储。表是相关数据条目的集合,由列和行组成。

视图: 视图是一个虚拟表,其内容由查询定义。除非建立索引,否则视图不作为数据库中存储的一组数据值存在。相对于桌子的优势是

  • 我们可以合并来自多个表或另一个视图的列/行,并具有一个合并的视图。
  • 通过允许用户通过视图访问数据,而无需授予用户直接访问视图的基础表的权限,可以将视图用作安全性机制。
  • 它充当下游系统的抽象层,因此不会暴露任何架构更改,因此下游系统不会受到影响。

16

视图是虚拟表。视图就像表一样由行和列组成。视图和表之间的区别在于,视图是在其他表(或视图)之上构建的定义,并且自身不保存数据。如果基础表中的数据正在更改,则相同的更改将反映在视图中。可以在单个表或多个表的顶部构建视图。它也可以建立在另一个视图之上。在“ SQL创建视图”页面中,我们将看到如何构建视图。

视图具有以下优点:

  1. 易于使用:视图向最终用户隐藏了数据库表的复杂性。本质上,我们可以将视图视为数据库表之上的抽象层。

  2. 节省空间:由于视图不存储实际数据,因此仅占用很少的空间。

  3. 附加的数据安全性:视图只能在表中包括某些列,以便仅包括不敏感的列并向最终用户公开。此外,某些数据库允许视图具有不同的安全性设置,从而使敏感数据无法窥探。

答案来自:http : //www.1keydata.com/sql/sql-view.html


4

认为与数据库没有任何直接或物理关系。并且不允许通过视图进行修改(例如,插入,更新,删除)。它只是一组逻辑表


1
在SQL Server中,如果仅引用一个基础表,则可以通过视图修改基础表。看到这里
Kristen Hammack

3

视图可以帮助我们摆脱一直使用数据库空间的麻烦。如果创建表,则该表将存储在数据库中,并在其存在时保留一些空间。而是在查询运行时使用视图,从而节省了数据库空间。尽管我们可以,但不能始终创建大表来连接不同的表,但这取决于表节省空间的大小。因此,视图只是在运行时临时创建一个表,并加入其他表。专家,如果我错了,请纠正我。


2

表:

表将数据存储在数据库中并包含数据。

视图:

视图是一个虚构的表,仅包含字段(列),不包含将在运行时构建的数据(行)。视图是通过联接从一个或多个表中创建的视图,具有选定的列。创建视图以出于安全原因向用户隐藏某些列,并隐藏该列中存在的信息。视图减少了每次编写查询来访问特定列的查询的工作量,而不是每次都将复杂的查询打入数据库中,我们可以使用视图


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.