【问题标题】:Difference between View and table in sqlsql中视图和表的区别
【发布时间】:2011-08-26 06:56:40
【问题描述】:

可能重复:
Difference Between Views and Tables in Performance

SQL中视图和表的主要区别是什么。使用视图而不是表格有什么好处。

【问题讨论】:

  • 看起来不像是重复的。链接的帖子专门询问性能/效率。这篇文章正在询问更多关于它们作为数据类型的不同之处,正如所选答案所代表的那样。
  • 到目前为止还没有真正令人满意的答案...:/

标签: sql view


【解决方案1】:

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

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

您可以将查询保存为视图,然后SELECT * FROM view

【讨论】:

  • 所以视图实际上是一个由 select 语句创建的表。视图已存储并且可以访问,因此使用该信息而不是视图创建新表有什么不同。
  • 您可以将视图视为可以重复的“已保存的选择语句”。这不是一张真正的桌子。即使某些数据库允许创建下面有真实表的视图,它实际上只是一个返回结果的SELECT 语句。
  • 注意事项:一些数据库系统列表视图以及“显示表”上的表;命令。
  • @ShwetabhShekhar 这取决于您的数据库和视图类型。在最简单的形式中,数据库将执行 SQL,就好像您刚刚发送了整个内容一样。在这种情况下,您只需保存一次又一次地发送许多字节。一些数据库可以执行查询并将结果存储在(真实)表中。然后你需要以某种方式解决你提到的问题。检查数据库文档如何做到这一点。
  • @FoxDeploy 是的,因为该视图没有任何帮助。有用的场景是具有有限权限的视图或从同一数据库或另一个数据库(远程表)中的另一个模式中选择表的视图。
【解决方案2】:

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

查看: 视图是一个虚拟表,其内容由查询定义。 除非被索引,否则视图不会作为存储在数据库中的一组数据值存在。 优于表的优点是

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

【讨论】:

    【解决方案3】:

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

    视图具有以下优势:

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

    2. 节省空间:视图只需要很少的空间来存储,因为它们不存储实际数据。

    3. 额外的数据安全性:视图只能包含表中的某些列,以便只包含非敏感列并向最终用户公开。此外,一些数据库允许视图有不同的安全设置,从而隐藏敏感数据不被窥探。

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 在 SQL Server 中,如果基础表只引用一个基表,则可以通过视图修改基础表。 see here
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        表:

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

        查看:

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

        【讨论】:

          【解决方案7】:

          SQL 视图:

          视图是一个基于 SQL 语句结果集的虚拟表,它以某个名称存储在数据库中。

          SQL 表:

          SQL 表是由字段(列)和行组成的数据库实例。

          查看以下帖子,作者列出了大约七个differences between views and table

          https://codechef4u.com/post/2015/09/03/sql-views-vs-tables

          【讨论】:

            猜你喜欢
            • 2022-08-05
            • 1970-01-01
            • 2022-06-15
            • 2011-06-02
            • 2015-12-11
            • 2012-01-29
            • 1970-01-01
            • 2021-12-21
            相关资源
            最近更新 更多