Coursera 笔记

Module 06 · Bonus Module: Advanced SQL for Data Engineers

Views视图

Coursera ↗

欢迎观看本视频,了解数据库中的视图 (Views)。

看完本视频后,您将能够:

  • 定义视图。
  • 描述何时使用视图。
  • 解释创建视图的语法。

什么是视图? (Definition)

视图是一种替代表示方式,用于表示存在于一个或多个表(或视图)中的数据。

  • 视图可以包含一个或多个基础表或现有视图中的全部或部分列。
  • 创建视图就是创建了一个命名规范的结果表定义,可以像查询普通表一样查询它。
  • 您还可以通过对视图运行 INSERT、UPDATE 和 DELETE 查询来更改基础表中的数据。
  • 当您定义视图时,视图的定义被存储起来;而视图所代表的数据是存储在基础表中,而不是视图本身。

何时使用视图? (When to Use)

您可以使用视图来实现以下目的:

  • 选择性地展示数据:
    • 显示给定表的部分数据,从而可以省略敏感数据,例如税务信息、出生日期或薪水。
  • 组合数据:
    • 以有意义的方式组合两个或多个表。
  • 简化访问控制:
    • 通过授予对视图的访问权限,简化对数据的访问,而无需授予对底层表的访问权限。
  • 聚焦相关数据:
    • 仅显示与使用该视图的流程相关的数据部分。

💡 示例

您可以创建一个视图来仅显示 Employees 表中的非敏感数据:Employee ID、姓名、地址、职位 ID、经理 ID 和 部门 ID。该视图将不显示薪水或出生日期等敏感数据。


创建视图的语法 (Syntax)

您使用 CREATE VIEW 语句来创建一个基于一个或多个表或视图的视图。

1. 定义视图的步骤

  1. 使用 CREATE VIEW 语句并为视图分配一个名称(长度最多 128 个字符)。
  2. 列出您想要包含的列。如果需要,可以使用别名 (alias) 来命名这些列。
  3. 使用 AS SELECT 子句来指定视图中的列。
  4. 使用 FROM 子句来指定基础表名称。
  5. 您可以添加可选的 WHERE 子句来细化视图中的行。

2. 语法结构示例

SQL

CREATE VIEW ViewName (Column1, Column2, ...)
AS
SELECT Column_A, Column_B, ...
FROM BaseTable
WHERE Condition;

💻 创建视图示例

语句 CREATE VIEW EMPINFO AS SELECT EmpID, Name, Address FROM Employees; 创建了一个名为 EMPINFO 的视图,它基于 Employees 表。

SELECT 语句返回该视图中的数据。

3. 视图的动态性与限制

  • 视图是动态的:它们由用于创建它们的 SELECT 语句所返回的数据组成。
  • 当您在另一个 SQL 语句中使用视图时,它的行为就像您使用了返回视图内容的 SELECT 语句一样。
  • 用于创建视图的 SELECT 语句可以命名其他视图和表,并且可以使用 WHERE、GROUP BY 和 HAVING 子句。
  • 限制:它不能使用 ORDER BY 子句,也不能命名主变量 (host variable)。

🔍 带条件创建视图示例

在这个示例中,EMPINFO 视图是只针对 MANAGER_ID 为 30002 的行创建的。您可以使用 SELECT 语句显示该视图中的信息,并验证只包含 MANAGER_ID 为 30002 的行。

删除视图

如果您需要完全移除一个视图,可以使用 DROP VIEW 语句。


结论回顾

在本视频中,您学到了:

  • 视图是访问表中数据的替代方式。
  • 它们可以包含来自多个基础表和现有视图的指定列。
  • 一旦创建,视图可以像表一样被查询,并且可以通过视图修改基础表中的数据。
  • 视图是动态的;仅存储视图的定义,而不存储数据本身。
  • 您可以使用 CREATE VIEW 语句来创建基于一个或多个表或现有视图的视图。