用sql中的视图控制数据访问

数据库视图降低了最终用户体验的复杂性,并限制了用户对数据库表中包含的数据的访问。实际上,视图使用数据库查询的结果动态填充虚拟数据库表的内容。...

数据库视图降低了最终用户体验的复杂性,并限制了用户对数据库表中包含的数据的访问。实际上,视图使用数据库查询的结果动态填充虚拟数据库表的内容。

为什么使用视图?

让用户通过视图访问数据而不是直接访问数据库表有两个主要原因:

  • 视图提供了简单、细粒度的安全性。使用视图限制用户在表中可以看到的数据。例如,如果您有一个employees表,并且希望为某些用户提供对全职员工记录的访问权限,则可以创建一个仅包含这些记录的视图。这比备选方案(创建和维护阴影表)简单得多,并确保数据的完整性。
  • 视图简化了用户体验。视图对不需要查看的最终用户隐藏数据库表的复杂详细信息。如果用户转储视图的内容,他们将看不到视图未选择的表列,并且可能无法理解。这样可以避免由于列、唯一标识符和表键的名称不正确而引起的混淆。

创建视图

创建视图非常简单:只需创建一个包含要强制执行的限制的查询,并将其放置在CREATEVIEW命令中。以下是一般语法:

CREATE VIEW viewname AS

例如,要创建全职员工视图,请发出以下命令:

CREATE VIEW fulltime ASSELECT first_name, last_name, employee_idFROM employeesWHERE status='FT';

修改视图

更改视图内容使用与创建视图完全相同的语法,但使用ALTER view命令而不是CREATE view命令。例如,要向fulltime视图添加将员工电话号码添加到结果的限制,请发出以下命令:

ALTER VIEW fulltime ASSELECT first_name, last_name, employee_id, telephoneFROM employeesWHERE status='FT';

删除视图

使用dropview命令从数据库中删除视图很简单。例如,要删除全职员工的视图,请使用以下命令:

DROP VIEW fulltime;

视图与物化视图

视图是一个虚拟表。物化视图是写入磁盘并被访问的同一视图,就好像它本身就是一个表一样。

对视图运行查询时,源于视图的辅助查询将实时执行,然后这些结果将反馈到原始主查询中。如果您的视图异常复杂,或者您的主查询需要在多个表和视图之间进行大量的哈希连接,那么您的主查询将以海龟般的速度执行。

物化视图可以加快查询的执行速度,因为它的功能类似于写入磁盘的预编译查询,因此执行速度与表一样快。但是,物化视图的效果仅与刷新它们的事件过程一样好。从长远来看,通过良好的维护,物化视图通过在延迟刷新时间上的一点折衷来加快速度,而不需要一堆可能处于休眠状态、占用磁盘空间或不适当地获取其他人查询的阴影表。

  • 发表于 2021-09-08 12:27
  • 阅读 ( 50 )
  • 分类:数学

你可能感兴趣的文章

授予(grant)和撤销(revoke)的区别

...drop是一些DDL命令。数据操作语言(DML)允许操作数据库中的数据。select、insert、update和delete是DML命令的一些示例。数据控制语言(DCL)允许控制对数据库中数据的访问。grant和revoke是两个提供数据库安全性的DCL命令。 图01:SQL数...

  • 发布于 2020-10-18 13:07
  • 阅读 ( 390 )

为下一个项目考虑6个数据库引擎

对于软件开发中的数据库引擎来说,并不是一刀切的,因为这完全取决于您的项目需求。 ...

  • 发布于 2021-03-28 09:56
  • 阅读 ( 275 )

桌子(table)和看法(view)的区别

...。关系数据库使用多个表来存储链接的数据和记录。 表中的数据可以物理存储在数据库中,也可以不物理存储在数据库中。有两种类型的表,即;使用对象类型定义列并保存已定义对象实例的对象表,以及在关系数据库中保存...

  • 发布于 2021-06-23 19:22
  • 阅读 ( 213 )

sql语句(sql)和plsql语言(plsql)的区别

...于SQL是一种查询语言,用于存储、操作和检索关系数据库中的数据,而PLSQL是SQL的扩展,用于管理Oracle关系数据库中的数据。 关系数据库管理系统将数据存储在数据库中。数据库由一组表组成。SQL允许用户访问RDBMS中的数据。它...

  • 发布于 2021-06-30 23:38
  • 阅读 ( 267 )

ddl公司(ddl)和dml公司(dml)的区别

...在于DDL有助于改变数据库的结构,而DML有助于管理数据库中的数据。 数据库是相关数据的集合。DBMS(databasemanagementsystem)是一种方便地访问和管理数据库的软件。它们允许多个用户访问数据并为数据提供安全性。关系型DBMS以表...

  • 发布于 2021-07-01 05:31
  • 阅读 ( 396 )

删除(delete)和截断(truncate)的区别

...关联。结构化查询语言(SQL)允许用户编写查询来操作表中的数据。有各种SQL命令,其中两个是delete和truncate。 覆盖的关键领域 1.什么是删除-定义,功能2.什么是截断-定义,功能3.删除和截断的区别是什么-关键区别的比较 关键...

  • 发布于 2021-07-01 07:59
  • 阅读 ( 256 )

滴(drop)和在sql中删除(delete in sql)的区别

...库管理系统(RDBMS)是一种成熟的数据库管理系统。RDBMS中的表是链接在一起的。MySQL和MSSQL是两种常见的RDBMS。结构化查询语言(SQL)有助于在RDBMS中编写查询并对数据执行操作。DROP和DELETE是两个主要的SQL命令。 覆盖的关键领域 ...

  • 发布于 2021-07-01 13:05
  • 阅读 ( 243 )

sql语句(sql)和tsql公司(tsql)的区别

...SQL作为标准的数据库查询语言。可以使用SQL对存储在RDBMS中的数据执行各种操作。开发人员可以编写查询来创建表、创建数据库、**、更新、删除数据和许多其他操作。 有三种类型的SQL命令,如下所示。 DDL(数据定义语言)–...

  • 发布于 2021-07-01 14:22
  • 阅读 ( 572 )

林克(linq)和sql语句(sql)的区别

...的不匹配和复杂性。简而言之,LINQ是一种内置于.NET语言中的结构化查询语法。另一方面,DBMS是一种使数据管理更容易的软件。另外,RDBMS是按照关系模型设计的数据库管理系统,SQL是在RDBMS中进行insert、update、delete、select等操...

  • 发布于 2021-07-01 22:56
  • 阅读 ( 474 )

看法(view)和桌子(table)的区别

...开发人员可以使用结构化查询语言(SQL)对存储在数据库中的数据创建各种操作。可以使用SQL**、更新、选择和删除数据,以及执行高级操作,如存储过程和触发器。此外,在RDBMS的上下文中,有各种数据库对象。其中两个是视...

  • 发布于 2021-07-02 00:06
  • 阅读 ( 256 )
Azcfze15
Azcfze15

0 篇文章

相关推荐