3.5视图 课件(共25张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源下载
  1. 二一教育资源

3.5视图 课件(共25张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源简介

(共25张PPT)
关系数据库标准语言SQL
第3章
目录
01
SQL概述
02
数据库的创建
与管理
03
数据表及其操作
04
数据查询
05
视图
06
索引
本章主要内容
结构化查询语言(Structured Query Language,SQL)是关系数据库管理的标准语言,具有数据定义、数据查询、数据操纵和数据控制四个方面的功能。SQL结构简单,功能齐全,是目前广泛应用的关系数据库查询语言。
本章主要介绍SQL Server 2019数据库管理系统各种工具的使用和SQL的使用。
视图
第3章
05
3.5 视图
视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制,是一个虚表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成。
视图是一种常用的数据库对象,可以把它看成从一个或几个基本表中导出的虚表或存在数据库中的查询。对于其所引用的基本表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前数据库或其他数据库的一个或多个表,或者其他视图。但是视图并不是以一组数据的形式存储在数据库中,数据库中只存储视图的定义,而不存储视图对应的数据,这些数据仍然存储在导出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之变化。
3.5 视图
视图为数据库用户带来很多便利之处,主要包括以下几个方面。
(1)简化查询操作。为复杂的查询建立一个视图,用户不必键入复杂的查询语句,只针对视图做简单的查询即可。
(2)数据保密。对不同的用户定义不同的视图,使用户只能看到与自己有关的数据。
(3)保证数据的逻辑独立性。对于视图的操作,例如查询,只依赖于视图的定义。当视图的基表要修改时,只需修改视图定义的子查询部分,而基于视图的查询不用改变。
3.5.1 创建视图
视图是一种数据对象,保存在数据库中,而查询则不然,因此创建新视图的过程与创建查询的过程不同。SQL Server提供了两种创建视图的方法:使用对象资源管理器创建视图和使用T-SQL语句创建视图。
(1)使用对象资源管理器创建视图
启动SQL Server Management Studio,在对象资源管理器中,展开TeachSystem数据库,右击“视图”选项,在弹出的快捷菜单中选择“新建视图”命令,如图所示。
在弹出的“添加表”对话框中,选择要使用的表或视图,然后单击“添加”按钮,或者双击选中的表或视图,就可将其添加到视图的查询中,这里选择student表和SC表,如图所示。最后单击“关闭”按钮,关闭“添加表”对话框,如图所示的“视图设计器”窗口。
3.5.1 创建视图
“视图设计器”窗口由四个区组成,从上到下依次为关系图窗格(表区)、网格窗格(列区)、SQL窗格(SQL SCRIPT区)和结果窗格(数据结果区)。在最上面的表区中选择相应的列,对每一列进行选中或取消选中,就可以控制属性列是否在视图中出现。在表区选中的列,将在列区中显示,相应的SQL语句将在SQL SCRIPT区中显示。如果需要对某列进行分组,可以右击属性列,在弹出的快捷菜单中选择“添加分组依据”命令。
单击工具栏上的红色惊叹号(!)按钮可以预览结果。最后单击工具栏上的“保存”按钮并输入视图的名称,完成视图的创建。
3.5.1 创建视图
(2)使用T-SQL语句创建视图
创建视图可以使用CREATE VIEW语句实现,其基本语法如下。
view_name:视图名称。视图名称必须符合有关标识符的规则。
column:视图中的列名,如果未指定列名,则视图列将获得与SELECT语句中的列相同的名字。
WITH ENCRYPTION:对CREATE VIEW语句的定义文本进行加密。
AS:指定视图要执行的操作。
select_statement:定义视图的SELECT语句。该语句可以使用多个表和其他视图。
WITH CHECK OPTION:强制针对视图执行的所有数据修改语句都必须符合在select_statement中设置的条件。
3.5.1 创建视图
【例3.59】创建院系编号为“08”的学生信息的视图。
【例3.60】创建院系编号为“08”的学生信息的视图,要求在进行插入和更新操作时保证该视图只有院系编号为“08”的学生。
3.5.1 创建视图
【例3.61】创建院系编号为“08”并选修了课程C02的学生信息的视图。
【例3.62】创建学生平均成绩的视图。
【例3.63】创建学生平均成绩的视图,要求平均成绩大于80。
3.5.2 修改视图
视图在创建成功之后,根据需要还可以修改其定义。视图定义可以通过对象资源管理器修改,或通过ALTER VIEW语句进行修改,但对于加密存储的视图定义,只能通过ALTER VIEW语句进行修改。
(1)使用对象资源管理器修改视图
在对象资源管理器中,展开TeachSystem数据库,再展开“视图”,选中需要修改的视图,右击,在弹出的快捷菜单中选择“设计”命令,将打开视图设计器窗口,然后就可以如同创建视图一样对视图定义进行修改。
3.5.2 修改视图
(2)使用T-SQL语句修改视图
使用ALTER VIEW语句可以更改一个已存在的视图的定义,其基本语法格式如下。
【例3.64】修改视图S_VIEW的定义。
3.5.3 查看视图
SQL Server允许用户查看视图的一些信息,如视图的基本信息、定义信息、与其他对象建立的依赖关系等。这些信息可以通过相应的存储过程查看。可以使用对象资源管理器和系统存储过程查看视图信息。
(1)使用对象资源管理器查看视图信息
启动SQL Server Management Studio,在对象资源管理器中,依次展开“TeachSystem”→“视图”→“dbo.S_VIEW”→“列”,即可查看视图S_VIEW的列信息,包括列名称、数据类型和约束信息,如图所示。
3.5.3 查看视图
(2)使用存储过程查看视图信息
在SQL Server中,可以使用三个系统存储过程了解视图的信息,其分别是sp_depends、sp_help和sp_helptext。
查看视图与其他对象间的依赖关系
可以使用系统存储过程sp_depends查看视图与其他对象间的依赖关系。其语法形式如下。
【例3.65】查看视图S_VIEW依赖的对象和列。
EXEC sp_depends S_VIEW
3.5.3 查看视图
查看视图的基本信息
可以使用系统存储过程SP_HELP显示视图的名称、所有者、创建日期、列信息、参数等。其语法格式如下。
[EXCUTE] sp_help [[@objname=]'name']
参数[@objname=]'name'是数据库对象的名称。
【例3.66】查看视图S_VIEW的详细信息。
EXEC sp_help S_VIEW
3.5.3 查看视图
查看视图的定义信息
如果视图在创建时没有加密,即创建视图时没有选择WITH ENCRYPTION,则可以使用系统存储过程sp_helptext显示视图的定义信息。其语法格式如下。
[EXECUTE] sp_helptext [@objname=]'name'
参数[@objname=]'name'是数据库对象的名称,该数据库对象必须在当前数据库中。
【例3.67】查看视图S_VIEW的定义文本。
EXEC sp_helptext S_VIEW
3.5.4 删除视图
当不再需要一个视图,或想清除视图定义及与之相关联的权限时,可以删除视图。删除视图后,与视图相关的数据并不受影响,只是删除了定义在系统表中的视图信息和视图相关的权限。
(1)使用对象资源管理器删除视图
启动SQL Server Management Studio,在对象资源管理器中,展开TeachSystem数据库,再展开“视图”,右击欲删除的视图,如S_VIEW,在弹出的快捷菜单中选择“删除”命令,在弹出的“删除对象”对话框中单击“确定”按钮,即可删除视图S_VIEW,如图所示。
3.5.4 删除视图
(2)使用T-SQL语句删除视图
可以使用DROP VIEW语句完成从当前数据库中删除一个或多个视图,其语法格式如下。
DROP VIEW view_name […,n ] [ ; ]
【例3.68】删除视图S_VIEW。
DROP VIEW S_VIEW
3.5.5 查询视图
在定义视图以后,用户就可以对视图进行查询操作,查询视图数据的方法和查询表一样。
【例3.69】查询视图S_VIEW中年龄大于18岁的学生的姓名和年龄。
此查询的执行过程是:系统首先从数据字典中找到S-VIEW视图的定义,然后把此定义与用户的查询结合起来,转化成等价的对基本表student的查询,然后执行修正了的查询,这一转换过程称为视图消解,相当于执行了下列语句。
3.5.6 更新视图
由于视图是一个虚表,因此对视图的更新实际上最终要转化成对基本表的更新。其更新操作包括插入、修改和删除数据。如果要防止用户通过视图对不属于视图范围内的基本表数据进行操作,可在定义视图时加上WITH CHECK OPTION子句。这样在视图上对数据进行增、删、改时,SQL Server系统会检查视图定义中SELECT语句设置的条件,若操纵的记录不满足条件,则拒绝执行相应的操作。
(1)插入数据
在视图上用INSERT语句插入数据时要符合以下规则。
使用INSERT语句向数据表中插入数据时,用户必须具备插入数据的相关权限。
进行插入操作的视图只能引用一个基本表的列。
视图中包含的列必须是直接引用的表列中的基础数据,不能是通过计算或聚合函数等方式派生得出的。
3.5.6 更新视图
在基本表中插入的数据必须符合在相关列上定义的约束条件,如是否为空、默认值的定义等。
视图中不能包含DISTINCT、GROUP BY或HAVING子句。
如果在视图定义中使用了WITH CHECK OPTION子句,则该子句将检查插入的数据是否符合视图定义中SELECT语句设置的条件,如果插入的数据不符合该条件,SQL Server会拒绝插入数据,并显示错误。
【例3.70】向视图S_VIEW中插入一条新的学生记录,其中学号为S12,姓名为张杰,年龄为20岁。
3.5.6 更新视图
【例3.71】向视图S_VIEW1中插入一条新的学生记录,其中学号为S13,姓名为陈丽,年龄为18岁,系别为07。
(2)修改数据
在视图上可以使用UPDATE语句实现对于基本表中相关记录的修改,但修改操作必须符合在视图中插入数据的相关规则,并且需要遵守以下规则。
修改视图中的数据时,不能同时修改两个或者多个基本表。
当视图来自多个基本表时,通常只能对非主属性进行修改操作。
视图中被修改的列必须是直接引用的基本表的列,不能是通过计算或聚合函数等方式派生得出的。
3.5.6 更新视图
【例3.72】将视图S_VIEW中姓名为杨影的学生的年龄修改为19岁。
系统在执行此语句时,首先从数据字典中找到S_VIEW的定义,然后把定义和修改语句结合起来,转换成等价的对基本表student的修改语句,相当于执行以下操作。
3.5.6 更新视图
(3)删除数据
在视图上可以使用DELETE语句实现基本表中相关记录的删除。如果在视图中删除数据,该视图只能引用一个基本表的列,且删除操作必须满足基本表中定义的约束条件。
【例3.73】删除视图S_VIEW中姓名为杨影的学生记录。
系统在执行此语句时,首先从数据字典中找到S_VIEW的定义,然后把定义和删除语句结合起来,转换成等价的对基本表student的删除语句,相当于执行以下操作。

展开更多......

收起↑

资源预览