SQL?server中视图(view)创建、修改与删除

 更新时间:2024年01月10日 15:33:09   作者:树贤森  
这篇文章主要给大家介绍了关于SQL?server中视图(view)创建、修改与删除的相关资料,视图(View)是从一个或多个表或其它视图导出的,用来导出视图的表称为基表,导出的视图又称为虚表,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、视图概述:

视图是一种常用的数据库对象,它将查询的结果以虚拟表的形式存储在数据中。视图并不在数据库中以存储数据集的形式存在。视图的结构和内容是建立在对表的查询基础之上的,和表一样包括行和列,这些行列数据都来源于其所引用的表,并且是在引用视图过程中动态生成的。
视图中的内容是由查询定义来的,并且视图和查询都是通过SQL语句定义的,它们有着许多相同和不同之处,具体如下。

  • ?存储:视图存储为数据库设计的一部分,而查询则不是。视图可以禁止所有用户访问数据库中的基表,而要求用户只能通过视图操作数据。这种方法可以保护用户和应用程序不受某些数据库修改的影响,同样也可以保护数据表的安全性。
  • ?排序:可以排序任何查询结果,但是只有当视图包括TOP子句时才能排序视图。

总之,视图是由一个或多个表(或其他视图)派生的虚拟表。视图是基于查询结果集的命名查询,它包含了从一个或多个表中选择的特定列和行。因此视图可以被认为是一种虚拟表,其内容并不实际存储在数据库中,而是在查询时动态生成。通过创建视图,我们可以隐藏底层表的复杂性,简化复杂查询,并提供一种方便和安全的方式来访问数据。视图只是定义了一个查询,并根据查询的结果生成数据。

视图为数据呈现提供了多样的表现形式,用户可以通过它浏览表中感兴趣的数据。在SQL Server

2008中视图分为以下3类。

  • ?标准视图:保存在数据库中的SELECT查询语句,即通常意义上理解的视图。
  • ?索引视图:创建有索引的视图称为索引视图。它经过计算并存储有自己的数据,可以提高某些类型查询的性能,尤其适用于聚合许多行的查询,但不太适用于经常更新的基本数据集。
  • ?分区视图:是在一台或多台服务器间水平联结一组表中的分区数据,以使数据看上去来源于一个表。

二、视图好处

使用视图的好处包括:

  • 简化复杂的查询:视图可以根据具体的业务需求和逻辑将复杂的查询操作进行封装,提供更简洁易懂的查询语句。
  • 提高性能:视图可以对查询结果进行缓存,当查询相同的数据时,可以减少查询时间和数据库负载。
  • 数据安全性:通过视图,可以控制用户对数据的访问权限,限制他们只能查看和操作特定的列或行,从而保护数据的安全性。

三、创建视图

法一:

使用SQL Server Management Studio创建视图 ,具体操作步骤如下:

(1)启动SQL Server Management Studio,并连接到SQL Server2008中的数据库。

(2)在“对象资源浏览器”中展开“数据库”节点,展开指定的数据库,比如我选择的是SJCX。

(3)右击“视图”选项,在弹出的快捷菜单中选择“新建视图”命令,如图所示。

(4)打开“添加表”对话框,如图所示。在列表框中选择表rank,单击“添加”按钮,然后单击“关闭”按钮关闭该对话框。

(5)进入视图设计器界面,如图所示。在“表选择区”中选择“所有列”选项,单击执行按钮,视图结果区中自动显示视图结果。

(6)单击工具栏中的“保存”按钮口,弹出“选择名称”对话框,如图所示。在“输入视图名称”文本框中输入视图名称View_Rank,单击“确定”按钮即可保存该视图。 

法二:

使用 CREATE VIEW 语句,具体语法如下:

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table(s)
WHERE condition;

 比如选择数据库SJCX,创建视图View_people,则SQL语句为:

CREATE VIEW view_people AS
SELECT [DepartmentId]
      ,[RankId]
      ,[PeopleId]
      ,[PeopleName]
      ,[PeopleGender]
      ,[PeopleBirth]
      ,[PeopleSalary]
      ,[PeoplePhone]
      ,[PeopleAddress]
      ,[peopleAddTime]
      ,[PeopleMail]
  FROM [SJCX].[dbo].[People];

执行该SQL语句后即创建成功。这是最常用的创建视图的方法,使用 CREATE VIEW 语句指定视图的名称(view_name),然后在 SELECT 子句中定义视图所选择的列和表(或其他视图),并可以包含一个可选的 WHERE 子句来筛选数据。

四、查看视图信息

下面在SQL Server Management Studio中查看视图View Stu的信息,具体操作步骤如下。

(1)启动SQL Server Management Studio,并连接到SQL Server2008中的数据库。

(2)在“对象资源浏览器”中展开“数据库”节点,展开指定的数据库SJCX。

(3)再依次展开“视图”节点,就会显示出当前数据库中的所有视图,右击要查看信息的视图。

(4)在弹出的快捷菜单中,如果想要查看视图的属性,选择“属性”选项,弹出“视图属性”对话框,如图所示:

(5)如果想要查看视图中的内容,可在图所示的快捷菜单中选择“编辑前200行”选项,在右侧即可显示视图中的内容。

(6)如果想要重新设置视图,可在快捷菜单中选择“设计”选项,打开视图的设计界面,如图所示。在此界面中可对视图重新进行设置。

五、视图插入数据

使用视图可以插入新的记录,但应该注意的是,新插入的数据实际上是存储在与视图相关的表中。

示例:

向视图View_Rank中插入信息“4,顶级”。

步骤如下:

(1)右击要插入记录的视图,在弹出的快捷菜单中选择“设计”命令,显示视图的设计界面。

(2)在显示视图结果的最下面一行直接输入新记录即可,如图所示。

(3)然后按下Enter键,即可把信息插入到视图中。

(4)单击!按钮,完成新记录的添加,如图所示:

六、视图修改数据

使用视图可以修改数据记录,但是与插入记录相同,修改的是数据表中的数据记录。

示例:

修改视图View_Rank中的记录,将“顶级”修改为“低级”。

步骤如下:

(1)右击要修改记录的视图,在弹出的快捷菜单中选择“设计”命令,显示视图的设计界面。

(2)在显示的视图结果中,选择要修改的内容,直接修改即可。

(3)最后按下Enter键,即可把信息保存到视图中。 

七、视图删除数据

使用视图可以删除数据记录,但是与插入记录相同,删除的是数据表中的数据记录。

示例:

删除视图View_Rank中的记录“低级”。

步骤如下:

(1)右击要删除记录的视图,在弹出的快捷菜单中选择“设计”命令,显示视图的设计界面。

(2)在显示视图的结果中,右击要删除的行“低级”,在弹出的快捷菜单中选择“删除”命令,弹出“删除”对话框,如图所示。

(3)单击“是”按钮,便可将该记录删除。 

(4)检查结果,如图所示:

八、删除视图

对于数据库中不需要的视图可以将其删除,以释放存储空间。可以使用企业管理器将其删除,也可以使用SQL语句将其删除。

法一:

使用企业管理器删除视图的步骤如下:

(1)启动SQL Server Management Studio,.并连接到SQL Server2008中的数据库。

(2)在“对象资源管理器”中依次展开“数据库”指定的数据库/“视图”节点。

(3)右击要删除的视图,在弹出的快捷菜单中选择“删除”命令,弹出“删除对象”对话框,如图所示。 在“删除对象”对话框中,单击“显示依赖关系”按钮,可以显示与该视图有关的数据表和视图,单击“确定”按钮,便可将该视图删除。

注意:
在删除之前,应该先查看视图的依赖关系,如果有对象依赖于要删除的视图,那么要确
定是否要保存该对象,如果不保存,则可以直接将该视图删除,否则将不能删除该视图。

法二:

使用 DROP VIEW 语句来删除视图。下面是删除视图的语法:

DROP VIEW [IF EXISTS] view_name;
 
--或者
IF OBJECT_ID('view_name', 'V') IS NOT NULL
    DROP VIEW view_name;

可选的 IF EXISTS 子句用于检查视图是否存在。如果视图不存在,执行语句时不会引发错误。

使用 OBJECT_ID 函数检查视图是否存在(V 表示视图),如果存在则执行 DROP VIEW 语句进行删除。

注意:

从 SQL Server 2016 版本开始,引入了 DROP VIEW IF EXISTS 语法。因此,如果使用的是 SQL Server 2016 及其更高版本,可以直接使用该语法来删除视图。

示例:

删除视图view_people:

-- 删除视图
DROP VIEW view_people;
 
-- 删除视图(如果存在)
DROP VIEW IF EXISTS view_people;
 
--或者
IF OBJECT_ID('view_people', 'V') IS NOT NULL
    DROP VIEW view_people;

总结

到此这篇关于SQL server中视图(view)创建、修改与删除的文章就介绍到这了,更多相关SQLServer视图内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Linux环境中使用BIEE 连接SQLServer业务数据源

    Linux环境中使用BIEE 连接SQLServer业务数据源

    biee11g默认安装了mssqlserver的数据驱动,不需要在服务器端进行重新安装,配置过程主要基于ODBC实现,本文主要介绍客户端为windows、服务端为linux系统的配置过程。
    2014-07-07
  • SQL Server误设置max server memory的处理方法

    SQL Server误设置max server memory的处理方法

    这篇文章主要给大家介绍了关于SQL Server误设置max server memory的处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL Server具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧下
    2019-12-12
  • SQLServer中IF THEN逻辑的实现

    SQLServer中IF THEN逻辑的实现

    if-then语句是IF控制语句中最简单的形式,经常用于决策和更改程序执行的控制流程,本文主要介绍了SQLServer中IF THEN逻辑的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • SQL Server 日期和时间的内部存储过程

    SQL Server 日期和时间的内部存储过程

    在SQL Server的内部存储中,日期和时间不是以字符串的形式存储的,而是使用整数来存储的。这篇文章主要介绍了SQL Server 日期和时间的内部存储,需要的朋友可以参考下
    2019-12-12
  • 判断一个表的数据不在另一个表中最优秀方法

    判断一个表的数据不在另一个表中最优秀方法

    判断一个表的数据不在另一个表中最优秀方法
    2009-11-11
  • SQL 使用 VALUES 生成带数据的临时表实例代码详解

    SQL 使用 VALUES 生成带数据的临时表实例代码详解

    这篇文章主要介绍了SQL 使用 VALUES 生成带数据的临时表,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2007-09-09
  • 删除Table表中的重复行的方法

    删除Table表中的重复行的方法

    在写SQL的时候经常会有这样的需求: 在一个Table中会有多条重复的数据,如何有效的取出来不重复的数据,或者是删除掉重复的数据,或者取出某列重复值的第一条数据.
    2010-06-06
  • 一段压缩MS SQLServer日志的语句

    一段压缩MS SQLServer日志的语句

    一段压缩MS SQL Server日志的语句,需要的朋友可以参考下。
    2010-11-11
  • 数据库表的查询操作(实验二)

    数据库表的查询操作(实验二)

    这篇文章主要介绍了表的查询操作,包括单表查询、多表连接及查询、嵌套查询、集合查询等,需要的朋友可以参考下
    2015-08-08
  • SQL Server视图的讲解

    SQL Server视图的讲解

    今天小编就为大家分享一篇关于SQL Server视图的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论

?


http://www.vxiaotou.com