SQL 中的视图

2025年3月17日 | 阅读 3 分钟
  • SQL 中的视图被视为一个虚拟表。视图也包含行和列。
  • 要创建视图,我们可以选择数据库中一个或多个表中的字段。
  • 视图可以根据特定条件包含特定行,也可以包含表的所有行。

视图的优点

  1. 复杂性:视图有助于降低复杂性。可以为不同的用户在同一个基表上创建不同的视图。
  2. 安全性:通过从视图中排除敏感信息来提高安全性。
  3. 查询简化:有助于简化用户的命令。视图可以从多个不同的表中提取数据,并将其呈现为单个表。
  4. 一致性:视图可以呈现数据库结构的一致、不变的图像。视图可用于重命名列而不影响基表。
  5. 数据完整性:如果通过视图访问和输入数据,DBMS 可以自动检查数据以确保其满足指定的数据完整性约束。
  6. 存储容量:视图占用非常少的空间来存储数据。
  7. 逻辑数据独立性:视图可以在一定程度上使应用程序和数据库表相互独立。

视图的缺点

使用单个基表创建的视图在 DML 语句方面存在某些限制:

  1. 如果基表中有任何非空列未出现在视图中,则不能插入。
  2. 如果 INSERT 或 UPDATE 中引用的任何列包含聚合函数或由表达式定义的列,则不能插入或更新。
  3. 如果启用了只读选项,则不能在视图上执行 INSERT、UPDATE、DELETE 语句。
  4. 不能在临时表上创建视图。
  5. 如果视图包含聚合函数 GROUP BY、DISTINCT 或对伪列 rownum 的引用,则不能插入、更新、删除。
  6. 不能将参数传递给 SQL Server 视图。
  7. 不能将规则和默认值与视图关联。

示例表

Student_Detail

STU_ID姓名地址
1Stephan德里
2KathrinNoida
3大卫Ghaziabad
4Alina古尔冈

学生分数

STU_ID姓名MARKS年龄
1Stephan9719
2Kathrin8621
3大卫7418
4Alina9020
5John9618

1. 创建视图

可以使用 **CREATE VIEW** 语句创建视图。我们可以从单个表或多个表创建视图。

语法

2. 从单个表创建视图

在此示例中,我们从 Student_Detail 表创建了一个名为 DetailsView 的视图。

查询

就像查询表一样,我们可以查询视图来查看数据。

输出

姓名地址
Stephan德里
KathrinNoida
大卫Ghaziabad

3. 从多个表创建视图

可以通过在 SELECT 语句中包含多个表来创建来自多个表的视图。

在给出的示例中,从 Student_Detail 和 Student_Marks 两个表创建了一个名为 MarksView 的视图。

查询

显示 View MarksView 的数据

姓名地址MARKS
Stephan德里97
KathrinNoida86
大卫Ghaziabad74
Alina古尔冈90

4. 删除视图

可以使用 Drop View 语句删除视图。

语法

示例

如果要删除 View **MarksView**,可以这样做:

视图的意义

视图具有高度意义,因为它们可以在任务方面提供优势。视图可以表示表中数据的子集。因此,它们可以限制底层基表对外部世界的暴露程度。它们用于数据库中的安全目的,充当真实表架构和可编程性之间的中间层。它们充当聚合表。

视图的类型

视图有两种类型。

Views in SQL
  1. 连接视图(Join View):连接视图是在其 from 子句中包含一个或多个表或视图的视图,并且它不使用任何 Group by 子句、Rownum、Distinct 和集合操作。
  2. 内联视图(Inline View):内联视图是通过替换 from 子句中的子查询来创建的视图,该子查询定义了可在主查询中引用的数据源。为了高效工作,子查询必须具有别名。

下一主题DBMS SQL 索引