资源简介 (共55张PPT)网站数据库应用技术SQL Server 2008(项目教程)项目七: 视图及其应用视图的概念视图的创建视图的更改与删除任务一任务二任务三视图及其应用任务四视图的管理与维护任务五视图的使用7.1 任务1: 视图的概念7.1.1相关知识视图的概念视图是一种常用的数据库对象,是从一个或者多个数据表或视图中导出的“虚表”,视图的结构和数据是对数据表(基表)进行查询的结果。视图被定义后就被存储在数据库中,通过视图看到的数据只是存放在基表中的数据。当通过视图进行修改数据记录时,修改的是基表中的数据;同时,当基表的数据发生变化时,这种变化也会自动反映到视图中。1.视图的概念视图是基于某个查询结果而生成的“虚表”,同数据表一样,也是由行列组成的,而且在数据操作中,可以像使用表一样使用视图。2.视图的分类在SQL Server2008中主要有三种常用视图,包括标准视图、索引视图和分区视图。其中,(1)标准视图将来自一个或多个基表的数据合并成为一个新的虚拟表。(2)索引视图索引视图已计算并存储起来,为视图创建唯一聚集索引可建立视图索引相关知识(3)分区视图分区视图将分散在一台或多台服务器上的一组表的分区数据横向联接起来。3.视图的优点视图的主要优点包括实现集中多个表中,查询起来比较繁琐,在这种情况下,可以将多个表中的数据集中在一个视图中,只通过执行视图查询即可完成复杂的多表查询过程,从而大大简化了数据的查询操作。表中通常存放的是某个实体的完整信息,如果不想让用户查看表中的有些信息,就可以为该用户创建一个视图,只将允许该用户查看的数据加入视图,并设置权限,使该用户允许访问视图而不能访问表,这样就保护了表中的数据。可以为表和视图分别设置访问权限,二者互不影响,从而提高了表的数据安全性。在某些情况下,由于表中数据量太大,需要对表中的数据进行水平或者垂直分割,如果直接分割数据表,可能会引起应用程序的错误。可以使用视图对数据表中的数据进行分块形式,从而使应用程序仍可以通过视图来重载数据。视图的概念相关知识视图的概念有时SQL Server数据库需要与其它类型的数据库交换数据,即数据的导入和导出。如果SQL Server数据库中的数据存放在多个表中,进行数据交换就比较麻烦。如果将需要交换的数据通过一个视图来集中处理,再将视图中的数据与其它类型的数据库中数据交换,就简化了数据的维护管理。通过union运算,可以将不同SQL Server上的表的数据联合查询生成一个结果集,即生成分区视图,通过该视图,可以提高查询效率。7.2 任务2: 视图的创建7.2.1 相关知识视图的创建1.视图创建的方法为了创建视图,数据库管理员必须授予使用创建者创建的权限,视图的创建方式有两种,使用图形工具和使用T-SQL 语句。2.创建的视图的限制嵌套不能超过32层;包含的列不可超过1024列;不可使用COMPUTE、COMPUTE BY或 INTO;使用ORDER BY时,还要同TOP。3.创建视图的语法使用Transact-SQL的CREAT VIEW语句创建视图的语法结构和参数说明如下:基本语法:CREATE VIEW [schema_name. ]View_name [colum_list][ WITH ]ASselect_statement[ WITH CHECK OPTION ]; ::={ [ENCRYPTION ] [SCHEMABINDING ] [VIEW_METADATA] }其中:语法中的符号及参数说明如下:schema_name:视图所属框架名称view_name:视图名称column_list:视图中各个列使用的名称AS:指定视图要执行的操作select_statement:定义视图的SELECT语句WITH CHECK OPTION:强制针对视图执行的所有数据修改语句,都必须符合在statement中设置的条件。通过视图修改时,WITH CHECK OPTION可确保提交修改后,认可通过视图看到数据。ENCRYPTION:对sys.syscomments中包含CREAT VIEW语句文本的项进行加密。SCHEMABINDING:将视图绑定到基础表的架构VIEW_METADATA:指定为引用视图的查询请求浏览模式的元数据时,SQL Server 实例将向DB-Library、ODBC和OLE DB API 返回有关视图的元数据信息,而不返回基表的元数据信息。7.2.2 任务实施方法1:使用SSMS管理工具创建视图视图的创建步骤1:在“SQLServerManagerment Studio”管理工具中展开数据库对象文件夹,选择并展要创建视图的数据库如“Student”。右击“视图”对象,在弹出的快捷菜单中单击新建“视图”命令如图7-1所示。操作图示步骤2:在弹出的“添加表”对话框中,添加基表(按住Ctrl键可依次选择多个基表),单击“添加”按钮,若不再添加基表,可以选择“关闭”按钮,如图7-2所示,我们选择“班级”和“学生”两张表。如不需要某个已选基表可以选择该基表,按“delete”移除。操作图示任务实施视图的创建步骤3:每个基表列名前的复选框可以设置视图需要的输出字段,并在“关系图窗口”中进行显示,在条件窗格里还可以设置需要过滤的查询条件。如图7-3所示。操作图示步骤4:在关系图窗格中右键单击“执行SQL”命令,可查看当前视图所包含的数据内容,结果显示在“显示结果窗格”中,如图7-4所示。操作图示步骤5:单击 按钮,或选择“文件”|“保存视图”菜单项,在弹出的“选择名称”中输入视图名称“view_班级”,单击“确定”按钮,则完成创建过程。任务实施操作1:在数据库(Student)中创建一个基于“课程”表的视图“view_课程”,该视图要求输出所有课程的课程名称、课程类型、课程描述创建语句如下:USE StudentGOCREATE VIEW view_课程ASSELECT 课程名称,课程类型,课程描述 FROM 课程表GO执行“SELECT * FROM view_课程”语句可以查询视图结果如图7-5所示。方法2:使用Transaction-SQL语句创建视图视图的创建操作图示任务实施操作2:在数据库(student)中创建一个基于“班级”和“学生”表的视图“班级_view”,要求输出查询院系编号、班级名称、姓名、性别创建语句如下:USE StudentGOCREATE VIEW 班级_viewASSELECT 院系编号,班级名称,姓名,性别FROM 班级表,学生表WHERE 班级表.班级编号=学生表.班级编号GO执行“SELECT * FROM 班级_view”,输出结果如图7-6所示。视图的创建操作图示7.3 任务3:视图的更改与删除7.3.1相关知识视图的更改与删除1.视图更改与删除的方法修改和删除视图也有两种方式:使用SQL Server Management Studio管理工具和使用T-SQL语句。2.视图更改与删除的语法使用Transact-SQL的ALTER VIEW语句修改视图的语法结构和参数说明如下:基本语法:ALTER VIEW [schema_name. ]View_name [(column [ ,…n] ) ][ WITH[ ,…n] ]ASselect_statement [ ; ][ WITH CHECK OPTION ] ::={ [ENCRYPTION ] [SCHEMABINDING ] }修改视图后,你可以更改其名称,或者修改其定义,而无需删除再重新创建该视图。删除再重新创建视图将造成与该视图关联的权限丢失。(1)ALTER VIEW:修改先前创建的视图,这包括索引视图。(2)Schema_name:是视图所属架构的名称。(3)View_name:是要更改的视图。相关知识视图的更改与删除(4)Column:为要构成指定视图的一列或多列的名称(用逗号分隔)(5)ENCRYPTION:对sys.syscomment中包含ALTER VIEW语句文本的项进行加密。(6)SCHEMABINDING:将视图绑定到基础表的架构(7)AS:指定视图要执行的操作(8)VIEW_METADATA:指定SQL Server 实例将向DB-Library、ODBC和OLE DB API 返回有关视图的元数据信息(9)select_statement:定义视图的SELECT语句(10)WITH CHECK OPTION:强制针对视图执行的所有数据修改语句,都必须符合在statement中设置的条件。使用Transact-SQL的DROP VIEW语句删除视图的语法结构和参数说明如下:基本语法:DORP VIEW view_nameDROP VIEW 从当前数据库中删除一个或多个视图7.3.2 任务实施1.视图的更改任务实施方法1.使用“SMSS”管理工具创建视图视图的更改与删除步骤1:在SQL Server Management Studio中,选择要修改的视图单击右键,选择“设计”可进行相应的视图修改,按“保存”按钮退出修改。如图7-7所示。操作图示任务实施操作1:修改视图“班级_view”,增加输出学生的出生日期,执行语句如下:ALTER VIEW 班级_viewASSELECT 班级名称,院系编号,姓名,性别,出生日期FROM 班级表,学生表WHERE 班级表.班级编号=学生表.班级编号GO执行“SELECT * FROM 班级_view”,输出结果如图7-8所示:方法2:使用T-SQL语言修改视图操作图示视图的更改与删除任务实施步骤1:打开“SQL Server Management Studio”管理工具,选择要删除视图的数据库。2.视图的删除任务实施方法1:使用“SSMS”管理工具删除视图操作图示视图的更改与删除步骤2:单击数据库(Student)下的“视图”节点,选择要删除的视图对象,单击右键,选择“删除”或直接按“delete”键完成删除操作,如图7-9所示。任务实施如要在数据库中删除“班级_view”的视图,需要执行如下语句:DROP VIEW班级_view刷新视图列表,会发现“班级_view”视图已经被删除。方法2:使用T-SQL语句删除视图视图的更改与删除7.4 任务4:视图的管理与维护7.4.1任务实施视图的管理与维护查看视图信息1.查看视图的定义信息操作图示如果视图定义时没有加密,那么可以获得有关视图定义的信息,查询视图的方式和查询普通表一样,我们可以在相关视图上单击右键,选择“属性”进行查看。如图7-10所示。也可以使用“sp_help view_班级”查看视图的基本信息,如图7-11所示操作图示任务实施视图的管理与维护2.视图加密视图在创建和修改的过程中,可以选择是否进行视图加密,通过加密视图,可以保护视图创建逻辑,同时防止在SQL Server复制过程中发布视图。以下将演示如何创建加密视图。操作1:在数据库(Student)中创建一个基于“课程(course)”表的视图“course_view”,该视图要求输出所有课程的课程名(course_Name),课程类型(course_Type),课程简介(course_Des),并对视图进行加密。创建语句如下:USE StudentGOCREATE VIEW view_课程WITH ENCRYPTIONASSELECT 课程名称,课程类型,课程描述 FROM 课程表GO进行加密的视图图标中将出现一把小锁“ ”,表示视图已经加密。任务实施视图的管理与维护操作2:使用“sp_helptext”显示加密与未加密视图的文本信息:在查询编辑器中输入“sp_helptext view_课程”。由于视图“view_课程”为加密,所以显示结果如图7-12所示:操作图示7.5 任务4:视图的使用7.5.1相关知识视图的使用利用视图不但能够方便的进行查询,还可以通过视图对其关联的基表自由地进行插入、修改、删除和更新数据等操作,但在操作过程中应该注意以下几点:视图不维护单独的数据副本。如果视图在定义过程中使用了WITH CHECK OPTION 子句,则所有在视图上执行的数据修改都必须符合定义视图的 SELECT 语句中所设置的条件。修改视图中的数据时,应该对视图所引用基表的特定行所做的操作进行修改,不能在一个语句中对多个基表进行就修改,每次修改只能影响一个基表。不能修改通过计算或函数运算得到的字段。在基表的列中修改的数据必须符合对这些列的约束,如非空、字符等等,当进行删除数据操作时,也必须符合相关基表的约束值,才能操作成功。不能修改GROUP BY、HAVING或DISTINCT子句影响的列。对视图的更新后将影响基表。7.5.2 任务实施视图的使用步骤1:在“SQL Server Management Studio”中展开需要插入记录的数据库中的视图,单击右键,选择“编辑前200行”如图7-13所示。操作图示步骤2:在弹出的窗口中可以对同一个基表中的数据进行插入、修改、删除等操作。方法1:使用“SSMS”管理工具向视图中插入数据任务实施使用视图插入数据和在基表中插入数据一样,都可以用INSERT语句来实现,插入数据的操作,基本语法如下:INSERT INTOtable_name (列1, 列2,...) VALUES (值1, 值2,....)操作1:在数据库“Student”中,基于院系表创建视图“view_院系”。包含院系编号,院系名称,院系主任等信息。操作2:在“view_院系”视图中添加一条记录院系编号为“05”,院系名称为“机械系”,院系主任为“方明”。执行语句如下:INSERT INTO View_院系VALUES ('05','机械系','方明')输出结果如图7-14所示:方法2:使用T-SQL语句插入数据视图的使用操作图示任务实施视图的使用在视图中更新数据与在基表中更新一样,但是当视图是来自多个基表中的数据时,与插入一样每次跟新只能更新一个基表中的数据。视图的数据更新同样有运用“SQL Server Management Studio”管理工具和T-SQL语言两种方式。其中管理工具运用与插入相同,以下将介绍如何使用T-SQL语言完成数据更新。操作1:将“view_课程”视图中的课程“Java程序设计”更改为“C程序设计”使用语句如下:use StudentGoUPDATE view_课程SET 课程名称 = 'C程序设计'WHERE 课程名称 = 'Java程序设计'刷新视图,显示输出结果如图7-15所示。操作图示子任务使用UPDATE更新数据任务实施视图的使用通过视图删除数据与通过基表删除数据的方式一样,当视图中的数据被删除后,基表中的数据也被相应删除,同时如果视图同时基于多个基表时,则不允许删除数据操作。视图的数据删除同样有运用“SQL Server Management Studio”管理工具和T-SQL语言两种方式。其中管理工具运用与插入相同,以下将介绍如何使用T-SQL语言完成数据删除。操作1:将“view_院系”视图中的“机械系”的数据进行删除,使用语句如下:DELETE FROM view_院系WHERE 院系名称='机械系'刷新视图,显示输出结果如图7-16所示。操作图示子任务使用DELETE删除数据项目小结本项目主要介绍了视图的一些概念、分类、优点和使用视图需要注意的一些方面,并通过使用“SQL Server Management Studio”管理工具和Transact-SQL语法,讲解了视图的创建、修改、删除和视图信息的查询、视图的加密、视图数据的修改等操作。其中CREATE VIEW命令用于创建视图,ALTER VIEW命令用于视图的修改、DROP VIEW命令用于视图的删除。同时在视图定义过程中应该使用视图加密以保证数据安全。此外在视图的数据修改过程中应该注意视图的修改不能同时针对多张基表。通过对视图的使用,可以在实际的数据库编写当中大大简化用户的查询操作,从而提高查询效率。实 训 项 目综合实训1:创建视图实训项目实训目的:掌握视图的创建、维护、管理和删除。掌握运用Transact-SQL语言进行视图操作,并进行代码调试实训内容:使用“Library”数据库,使用“SQL Server Management Studio”工具创建一个视图“Library_view”从数据表Book和Borrow中,查询书名(Book_Name)、作者(Auther)、借阅日期(Borrow_Date)、归还日期(Return_Date)。使用“Library”数据库,使用Transact-SQL 语句,创建视图“Library_view2”从数据表Book和Borrow中,查询书名(Book_Name)、借阅日期(Borrow_Date)、归还日期(Return_Date)等信息,并在查询窗口中进行调试。实训操作步骤:实训项目实训1:进入SSMS管理界面后,在要创建的数据库“library”上选择视图,右键创建视图选择添加“book”和“borrow”两张表,单击保存,在弹出窗口中输入视图名“Library_view”如图7-17所示。操作图示实训操作步骤:实训项目实训2:在新建查询窗口输入Transact-SQL 语句:USE LibraryGOCREATE VIEW Library_view2ASSELECT Book_Name,Borrow_Date,Return_DateFROM Book_Info,Borrow_InfoWHERE Book_Info.Book_No=Borrow_Info.Book_NoGO单击执行如图7-18所示。操作图示THANKS 展开更多...... 收起↑ 资源预览