sql中View和table之间的区别

Mah*_* KP 120 sql view

可能重复:
性能中视图和表之间的差异

SQL中视图和表之间的主要区别是什么.使用视图而不是表是否有任何优势.

Aar*_*lla 179

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

视图的优点是它可以连接来自多个表的数据,从而创建它的新视图.假设您有一个带工资的数据库,您需要对其进行一些复杂的统计查询.

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

  • 您可以将视图视为可以重复的"已保存的选择语句".这不是一张桌子; 即使某些数据库允许创建下面有真实表的视图,它实际上只是一个返回结果的`SELECT`语句. (21认同)
  • 因此视图实际上是由select语句创建的表.视图存储并可以访问,因此使用该信息而不是视图创建新表之间会有什么不同. (10认同)
  • @ShwetabhShekhar 这取决于您的数据库和视图类型。在最简单的形式中,数据库将执行 SQL,就像您刚刚发送了整个数据一样。在这种情况下,您只需一次又一次地发送大量字节即可。某些数据库可以执行查询并将结果存储在(真实)表中。然后你需要以某种方式解决你提到的问题。检查数据库文档如何执行此操作。 (3认同)
  • @FoxDeploy 是的,因为该视图没有任何帮助。有用的场景是具有有限权限的视图或从同一数据库或另一个数据库(远程表)中的另一个模式选择表的视图。 (2认同)
  • 只是补充一下...一些数据库包括 SAP HANA。它将“视图”视为一个单独的实体,就像普通表一样。这些视图始终反映特定元组中的更新值,因为它位于最初生成视图的表中。“HANA 中的视图”进一步分为属性视图、分析视图和计算视图。 (2认同)

Sen*_*run 33

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

视图: 视图是一个虚拟表,其内容由查询定义.除非编入索引,否则视图不会作为数据库中存储的数据值集存在.比桌子的优点是

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


小智 12

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

视图具有以下优点:

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

  2. 节省空间:视图占用的空间非常小,因为它们不存储实际数据.

  3. 附加数据安全性:视图只能包含表中的某些列,以便仅包含非敏感列并向最终用户公开.此外,某些数据库允许视图具有不同的安全设置,从而将敏感数据隐藏起来.

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


Har*_*ris 7

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

  • 在 SQL Server 中,如果基础表仅引用一个基表,则可以通过视图修改该表。[参见此处](https://msdn.microsoft.com/en-us/library/ms180800.aspx) (2认同)

小智 5

视图帮助我们摆脱一直使用数据库空间的情况。如果您创建一个表,它将存储在数据库中并在其存在期间保留一些空间。相反,在查询运行时使用视图,从而节省数据库空间。我们不能一直创建大表来连接不同的表,尽管我们可以,但这取决于表有多大来节省空间。因此视图只是临时创建一个表并在运行时连接不同的表。各位专家,如有错误,请指正。