创建视图 SQL17 Mar 2025 | 5 分钟阅读 SQL 中的视图视图是存储在数据库中并具有名称的 SQL 语句。它可以被描述为以 SQL 查询形式组织的表的组合。它可以存储表中的所有行,也可以只存储表中选定的几行。用户可以使用单个或多个表在 SQL 中创建视图。这取决于用于创建视图的 SQL 查询。 用户创建视图是为了让特定表中存储的数据能够以虚拟表的形式呈现,这些虚拟表可以自然或直观地组织数据。它还使用户能够限制对数据的访问,以便用户只能查看或编辑他们想要的表的特定元素,而不改变其余部分。它还可以汇总来自多个表的数据,这些数据可用于基于数据创建报告。 创建视图如果用户想在数据库中创建视图,那么用户可以通过实现 CREATE VIEW 语句来实现。用户可以使用单个或多个表来创建视图。在 SQL 中,用户还可以使用另一个视图来创建一个视图。 在数据库中实现视图之前,用户必须确保他们拥有实现视图所需的所有必要权限。主要由数据库管理员创建视图。 实现视图的语法在 SQL 中创建视图的语法如下 我们在上面的语法中使用了单个表,但用户可以在 SELECT 语句中包含多个表,使用与任何其他 SQL SELECT 查询相同的语法。 在 SQL 中实现视图考虑一种情况,用户想使用 Students 表创建一个视图。Students 表包含以下记录
实现以下 SQL 查询以创建上述表。 输出 ![]() 用户只想在视图中显示两个列。这两列是 Students 表中的 F_Name 和 L_Name。创建视图的查询如下 现在,您可以使用 Student_VIEW 以与在其他表上实现查询相同的方式在 SQL 中实现查询。 在视图上实现查询查询视图的语法类似于查询表。下面是一个在 Student_VIEW 上实现 SELECT 查询的示例。 输出 ![]() 上述查询返回的结果将如下 WITH CHECK OPTION这是可以在 SQL 中用于 CREATE VIEW 的一个选项。实现 SQL 中的 WITH CHECK OPTION 可确保用于视图的每个 UPDATE 和 INSERT 查询都满足创建视图时定义的所有条件。 如果任何 UPDATE/INSERT 语句不满足条件,则特定的 SQL 语句将返回错误。让我们看一个示例,了解 WITH CHECK OPTION 对视图的实现。 在这种情况下,WITH CHECK OPTION 将确保 Age 列在视图中没有 NULL 值。如果插入语句中 Age 列的值为 NULL,则会返回错误。 更新视图用户可以在以下情况下更新当前视图。 SELECT 子句不得包含 DISTINCT 关键字。 SELECT 子句不得包含聚合函数。 SELECT 子句不得包含集合函数。 SELECT 子句不得包含集合运算符。 SELECT 子句不得包含 ORDER BY 子句。 FROM 子句不得包含多个表。 WHERE 子句不得包含子查询。 查询不得包含 GROUP BY 或 HAVING。 计算列可能需要更新。 如果视图满足上述所有情况,则用户可以执行对视图的更新操作。让我们来实现一个 SQL 查询来更新视图中的值。以下语句将更新 Aman 的年龄。 这将修改基础表 Student,并且视图将显示相同的结果。现在让我们尝试在基础表上实现一个 SQL 查询,然后实现 SELECT 查询来检索给定的结果。 向视图中插入行用户可以向视图中插入新记录。如果用户想插入一行,那么用户必须确保满足上述情况。相同的规则适用于 Update 命令和 INSERT 命令。 在这里,用户无法向 Student_VIEW 添加行,因为用户在创建视图时没有包含所有 NOT NULL 字段。如果用户将列中的字段设置为 NOT NULL,那么他们将能够插入新记录,因为他们可以在表中添加新记录。 从视图中删除行也可以从视图中删除现有行。执行行删除的规则与执行 UPDATE 或 INSERT 操作时适用的规则类似。 考虑一种情况,用户想删除所有年龄为 22 的记录。给定的查询将删除 age 列中值为 22 的所有记录 假设用户实现上述查询以从基础表 Student 中删除一行。修改后的结果也将显示在 Student_VIEW 中。您最终从基础表 CUSTOMERS 中删除了一行,当您使用 SELECT 查询实现上述查询以检索表时,这将反映在视图本身中。结果将如下 删除视图当用户创建视图时,可能会出现用户不需要该视图的情况。视图的删除称为删除视图。实现视图的 DROP 查询的语法类似于为表实现 DROP TABLE 命令。 以下查询将删除 Student_VIEW 下一主题SQL 中的 DCL 命令 |
我们请求您订阅我们的新闻通讯以获取最新更新。