SQL Server 中的视图17 Mar 2025 | 6 分钟阅读 视图是⼀个没有值的数据库对象。 它实际上是⼀个虚拟表,根据 SQL 查询的结果集创建。 但是,它看起来类似于⼀个包含⾏和列的实际表。 因此,我们可以说它的内容是基于基本表的。 它的操作类似于基本表,但它本身不包含任何数据。 它的名称始终是唯⼀的,就像表⼀样。 视图与表的区别在于,它们是在其他表(或视图)之上创建的定义。 如果基础表发⽣任何更改,则视图中也会反映相同的更改。 ![]() 此图说明了包含来⾃多个表的列的视图的概念。 在这⾥,我们有两张表,名为 'Table A' 和 'Table B',并且通过使⽤ SQL 语句,创建了⼀个包含两张表中数据的视图。 视图是⼀个数据库对象; 这就是它不进⾏物理存储的原因。 此功能使视图非常适合抽象或隐藏复杂的查询。 视图的⽤途SQL Server 中视图的主要⽤途是实现安全机制。 它可以防⽌⽤户查看表中的特定列和⾏。 它仅显⽰创建视图时声明的查询返回的数据。 剩余的信息对最终⽤户完全隐藏。 视图的类型SQL Server 将视图分为两种类型 1. ⽤户定义视图 ⽤户定义这些视图以满⾜其特定要求。 它也可以分为两种类型,⼀种是简单视图,另⼀种是复杂视图。 简单视图基于单个基表,⽽不使⽤任何复杂查询。 复杂视图基于多个表以及 group by ⼦句、order by ⼦句和 join 条件。 2. 系统定义视图 系统定义视图是 SQL Server 中预定义的且已存在的视图,例如 Tempdb、Master 和 temp。 每个系统视图都有其⾃⾝的属性和功能。 它们可以⾃动附加到⽤户定义的数据库。 我们可以将 SQL Server 中的系统定义视图分为三种类型:信息架构、编⽬视图和动态管理视图。 SQL Server 允许我们主要通过两种⽅式创建视图:
让我们详细解释这两种⽅式。 使⽤ T-SQL 查询我们可以使⽤ CREATE VIEW 和 SELECT 语句创建⼀个新视图。 SELECT 语句⽤于从源表获取数据以创建 VIEW。 语法 以下语法⽤于在 SQL Server 中创建视图 在此语法中,view_name 表⽰视图的名称。 它应该是唯⼀的。 SELECT 语句从源表中选择列。 WHERE 是⼀个可选的⼦句,⽤于指定必须满⾜的条件,才能将记录包含在 VIEW 中。 示例 让我们借助⼀个例⼦来理解它。 假设我们的数据库有⼀个名为 Student 和 Fee 的表,其中包含以下数据 ![]() 现在,我们将基于这些表创建⼀个视图。 因此,下⾯的例⼦将创建⼀个名为“course”的视图,该视图通过从两个表中获取数据来创建⼀个虚拟表。 我们可以使⽤下⾯的 SELECT 语句验证视图数据 此查询将显⽰以下输出 ![]() 在 SQL Server 中重命名视图我们还可以更改 SQL Server 中视图的名称。 我们可以通过使⽤名为 sp_rename 的内置存储过程或 SQL Server Management Studio 来执⾏此操作。 在这⾥,我们将看到两种⽅式 使⽤ sp_rename 以下语法⽤于重命名视图 假设我们要将上⾯创建的视图 course_enrolled 重命名为 course。 以下查询说明了此概念 使用 SQL Server Management Studio要在 SSMS 中更改视图的名称,我们需要导航到 对象资源管理器 -> 数据库 -> 视图。 在这⾥,您将看到所有可⽤的视图。 选择您要修改的视图,右键单击它并选择“重命名”选项。 例如,我们将如下重命名视图名称 course ![]() 单击“重命名”选项后,我们就可以更改其名称了 ![]() 在 SQL Server 中更新视图我们还可以在 SQL Server 中更新视图。 我们可以通过使⽤ ALTER VIEW 命令或管理 studio 来执⾏此操作。 在这⾥,我们将看到两种⽅式 ALTER VIEW 语句 假设我们要在上⾯创建的视图 course_enrolled 中添加更多名为“city”的列。 为此,我们需要使⽤以下语句 我们可以通过使⽤ SELECT 语句来验证此修改。 它将显⽰以下输出,在其中我们可以看到 city 列已成功添加。 ![]() 使用 SQL Server Management Studio要使⽤ SSMS 更改现有视图,我们需要导航到“视图”。 然后,选择您要修改的所需的视图名称,右键单击它并选择“设计选项”。 例如,我们将如下修改视图名称 course_enrolled ![]() 此选项将显⽰⼀个新的设计查询窗⼝,其中包含现有表及其关系。 在这⾥,我们可以对我们的视图进⾏任何更改。 ![]() 如何在 SQL Server 中获取视图定义?SQL Server 提供了 sp_helptext 存储过程,允许我们获取任何视图的信⾔。 我们可以使⽤下⾯的语法来查看视图的定义 假设您想查看 course_enrolled 视图的定义。 您可以如下操作 它将显⽰以下输出 ![]() 在 SQL Server 中列出视图我们可以使⽤ sys.views 或 sys.objects 编⽬视图来列出或显⽰ SQL Server 数据库中所有可⽤的视图。 这⾥有⼀个例⼦ 在 SQL Server 中删除视图我们还可以从 SQL Server 中删除现有视图。 我们可以通过使⽤ SQL 查询或管理 studio 来执⾏此操作。 在这⾥,我们将看到两种⽅式 使⽤ SQL 查询 SQL Server 提供了 DROP VIEW 命令,⽤于从数据库中删除视图。 如果视图不存在,我们将得到⼀个错误。 我们可以使⽤下⾯的语法来删除视图 假设您要删除视图 course_enrolled,我们可以如下操作 它将成功删除视图。 如果我们再次执⾏此命令,我们将得到以下错误消息 ![]() 使用 SQL Server Management Studio要使⽤ SSMS 删除现有视图,我们需要导航到“视图”。 选择您要删除的所需的视图名称,右键单击它并选择“删除”选项。 例如,我们将如下删除视图名称 course ![]() 单击“删除”选项后,我们将获得⼀个新窗⼝来确认删除过程。 单击“是”完成删除。 我们将确保它也会删除视图的所有权限。 下⼀个主题SQL Server MIN() 函数 |
我们请求您订阅我们的新闻通讯以获取最新更新。