11章-视图-SQL-教学课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《11章-视图-SQL-教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 视图 SQL 教学 课件
- 资源描述:
-
1、第第11章章 视图视图第第1111章章 视图视图 q 概述概述q 创建视图创建视图q 使用视图管理数据使用视图管理数据q 视图的修改视图的修改q 使用视图加强安全使用视图加强安全q 小结小结q 习题习题 2023-1-11第第11章章 视图视图一、视图概述一、视图概述视图是查看数据库表中数据的一种方法。实际上,视图是根据预定义的选择标准由一个或多个行的集合建立起来的动态表的静态定义。视图只是一种逻辑对象,是一种虚拟表,它并不是物理对象,因为视图不占物理存储空间。在数据库中,存储的是视图的定义,而不是视图查询的数据。通过这个定义,对视图查询最终转换为对基本表的查询。在视图中被查询的表称为基本表。
2、视图也可以从一个或多个其他视图中产生。大多数的SELECT语句都可以用在创建视图中。导出的SELECT语句存放在数据库中,而与视图定义相关的数据并没有在数据库中另外另外保存一份。2023-1-12第第11章章 视图视图使用视图时,要注意以下事项:(1)只能在当前数据库中创建视图。(2)一个视图最多可以引用1024个列。(3)视图的命名必须符合SQL Server中标识符的定义规则,不能与表同名,且对每个用户所定义的视图名称必须惟一,即对不同用户,即使是定义相同的视图,也必须使用不同的名字。(4)可以将视图建立在其他视图或者引用视图的过程之上,SQL Server 2000中允许最多32层的视图
3、嵌套。(5)不能将规则、默认值定义绑定在视图上,或将触发器与视图相关联。(6)定义视图的查询语句中不能包括ORDER BY、COMPUTE、COMPUTE BY子句或是INTO等关键词。2023-1-13第第11章章 视图视图第第11章章 视图视图第第11章章 视图视图二、创建视图二、创建视图当创建视图时,Microsoft SQL Server首先验证在视图定义中所参考的对象是否存在。视图的名称必须符合命名规则。指定视图所有者的姓名是可选的。因为视图的外表和表的外表是一样的,因此,为了区别表和视图,应该使用一种命名机制,使人容易分辨出视图和表。视图在数据库中是作为一个对象来存储的。创建视图前
4、,要保证创建视图的用户已被数据库所有者授权使用CREATE VIEW语句,并且有权操作视图所涉及的表或其他视图的SELECT权限。2023-1-16第第11章章 视图视图一般情况下,不必在创建视图时指定列名。SQL Server使视图中的列与定义视图的查询所引用的列具有相同的名称和数据类型。但是以下情况必须在定义视图时指定列的名称:由算术表达式、系统内置函数或常量得到的列;通常由于视图定义包含连接,而来自两个或多个不同表的列具有相同的名称。即视图中两列或多列具有相同的名称;希望视图中的列名与表中的列名不同的时候。2023-1-17第第11章章 视图视图 查询和视图虽然很相似,但还是有许多区别,
5、主要区别为:存储方式:视图存储为数据库的一部分(即视图保存在数据库中),而查询则不是。更新结果:对视图和查询的结果集更新限制是不同的。排序结果:可以排序任何查询结果,但是只有当视图包括TOP子句时才能排序视图。参数设置:可以为查询创建参数,但不能为视图创建参数。加密:可以加密视图,但不能加密查询。2023-1-18第第11章章 视图视图在SQL Server 2000中创建视图可以有三种方法:1、使用企业管理器创建视图使用企业管理器创建视图2、使用创建视图向导创建视图使用创建视图向导创建视图3、使用使用Transact-SQL语句中的语句中的CREATE VIEW命令创建视图命令创建视图202
6、3-1-19第第11章章 视图视图1、使用企业管理器创建视图、使用企业管理器创建视图方法一:在企业管理器左边的“树”选项卡中选择指定的SQL Server组,展开指定的服务器,打开要创建视图的数据库文件夹,选中指定的数据库,右击该数据库图标,从弹出的快捷菜单中依次选择“新建”“视图”命令,会打开新建视图对话框。方法二:也可以在数据库文件夹中,右击下一层的“视图”选项,在弹出的快捷菜单中选择“新建视图”命令。2023-1-110第第11章章 视图视图2、使用创建视图向导创建视图使用创建视图向导创建视图方法一:在企业管理器中选中某个数据库,单击“工具”菜单,选择其中的“向导”命令。在出现的“选择向
7、导”对话框中单击其中“数据库”选项左边的加号,在下一级选项中会看到“创建视图向导”选项。方法二:在企业管理器中,选择工具栏中的“向导”图标,会直接打开“选择向导”对话框。2023-1-111第第11章章 视图视图3、使用、使用Transact-SQL语句创建视图语句创建视图创建一个虚拟表,该表以另一种方式表示一个或多个表中的数据。CREATE VIEW必须是查询批处理中的第一条语句。视图的内容就是SELECT语句的内容。根据SELECT语句的不同,视图的定义即可以非常的简单,也可以非常复杂。其语法形式如下:CREATE VIEW .view_name (column ,.n )WITH ,.n
8、 AS SELECT_statement WITH CHECK OPTION :=ENCRYPTION|SCHEMABINDING|VIEW_METADATA 2023-1-112第第11章章 视图视图owner用于指定创建视图的所有者的用户名,owner必须是当前数据库中的现有用户名,owner默认为当前数据库中与当前连接相关联的用户名。view_name是视图的名称。视图名称必须符合标识符规则。可以选择是否指定视图所有者名称。column是视图中的列名。只有在下列情况下,才必须命名 CREATE VIEW中的列:当列是从算术表达式、函数或常量派生的,两个或更多的列可能会具有相同的名称(通常
9、是因为联接),视图中的某列被赋予了不同于派生来源列的名称。还可以在 SELECT 语句中指派列名。如果未指定 column,则视图列将获得与 SELECT 语句中的列相同的名称。n是表示可以指定多列的占位符。AS是视图要执行的操作。SELECT_statement用于创建视图的SELECT语句,利用SELECT命令可以从多个表中或者视图中选择列构成新视图的列,也可以使用UNION关键字联合起来的多个SELECT语句。但是,在SELECT语句中,不能使用ORDER BY、COMPUTE、COMPUTE BY语句和INTO关键字及临时表。其中各参数的说明如下:2023-1-113第第11章章 视图
10、视图WITH CHECK OPTION强制视图上执行的所有数据修改语句都必须符合由 SELECT_statement 设置的准则。通过视图修改行时,WITH CHECK OPTION 可确保提交修改后,仍可通过视图看到修改的数据。WITH ENCRYPTION表示SQL Server加密包含CREATE VIEW语句文本在内的系统表列。WITH ENCRYPTION主要用于将存储在系统表syscomments中的语句进行加密,可防止将视图作为 SQL Server 复制的一部分发布。SCHEMABINDING将视图绑定到架构上。指定 SCHEMABINDING 时,SELECT_stateme
11、nt 必须包含所引用的表、视图或用户定义函数的两部分名称(owner.object)。不能除去参与用架构绑定子句创建的视图中的表或视图,除非该视图已被除去或更改,不再具有架构绑定。否则,SQL Server 会产生错误。另外,如果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响该架构绑定视图的定义,则这些语句将会失败。VIEW_METADATA指定为引用视图的查询请求浏览模式的元数据时,SQL Server 将向 DBLIB、ODBC 和 OLE DB API 返回有关视图的元数据信息,而不是返回基本表或表。浏览模式的元数据是由 SQL Server 向客户端
12、 DB-LIB、ODBC 和 OLE DB API 返回的附加元数据,它允许客户端 API 实现可更新的客户端游标。浏览模式的元数据包含有关结果集内的列所属的基本表信息。对于用 VIEW_METADATA 选项创建的视图,当描述结果集中视图内的列时,浏览模式的元数据返回与基本表名相对的视图名。当用 VIEW_METADATA 创建视图时,如果该视图具有 INSERT 或 UPDATE INSTEAD OF 触发器,则视图的所有列(timestamp 除外)都是可更新的。2023-1-114第第11章章 视图视图【例】创建具有简单 SELECT 语句的视图USE pubsIF EXISTS(SE
13、LECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=titles_view)DROP VIEW titles_viewGOCREATE VIEW titles_viewAS SELECT title,type,price,pubdateFROM titlesGO2023-1-115第第11章章 视图视图【例】建立一个视图,用于从book_manage数据库中检索作者信息并使用中文字段名来代替表中的英文字段名。CREATE VIEW authinf(作者编号,姓名,性别,年龄)AS SELECT authorid,auth
14、orname,sex,age FROM book_manageGO2023-1-116第第11章章 视图视图【例】创建视图,使用 WITH ENCRYPTION、WITH CHECK OPTION选项。USE pubsIF exists(SELECT table_name FROM information_schema.views WHERE table_name=emprange)DROP VIEW emprangeGOCREATE VIEW emprange(emp_id,fname,lname,pubid,job_id)WITH encryptionASSELECT emp_id,fna
15、me,lname,pub_id,job_idFROM employeeWHERE job_id between 11 and 12WITH check optionGO2023-1-117第第11章章 视图视图2023-1-118第第11章章 视图视图【例】假设存在三个结构相同的表,图书信息1,图书信息2,图书信息3分别存放清华大学出版社、高等教育出版社、人民邮电出版社三个出版社的图书信息,可以创建一个视图将它们合并在一起。USE 学生图书借阅管理 GO CREATE VIEW 全部图书信息 AS SELECT*FROM 图书信息1 UNION SELECT*FROM 图书信息2 UNION
16、SELECT*FROM 图书信息32023-1-119第第11章章 视图视图【例如】创建视图B_TITLEAUTHOR。USE pubsGOCREATE VIEW b_titleauthor AS SELECT title,price,au_fname,au_lnameFROM titles t JOIN titleauthor ta ON(t.title_id=ta.title_id)JOIN authors a ON(a.au_id=ta.au_id)WHERE type=businessGO 创建视图时,源表可以是基本表,也可以是视图。【例如】创建商业类书的平均价格视图B_TITLEAU
17、THOR_AVG。USE pubs GO CREATE VIEW b_titleauthor_avg(price_avg)AS SELECT avg(price)FROM b_titleauthor GO/*查询商业类书的书名和作者姓名。*/SELECT title,au_lname,au_fname FROM b_titleauthor2023-1-120第第11章章 视图视图 【例】创建一个视图,其中的内容是所有价格低于10元的图书,并加密视图的定义。USE 学生图书借阅管理 GO CREATE VIEW 低价图书 WITH ENCRYPTION AS SELECT*FROM 图书信息 W
18、HERE 定价定价 18GO/*查看*/SELECT *FROM roysched_viewGO/*插入数据该行数据直接进入底层的基本表*/INSERT INTO roysched_view(title_id,lorange,hirange,royalty)VALUES(BU2075,50001,75000,22)/*分别查看新插入的记录*/SELECT*FROM roysched_viewGOSELECT*FROM roysched2023-1-128第第11章章 视图视图【例】创建视图B_TITLE(包括TITLE_ID、TITLE和PRICE3个字段),并向B_TITLE视图中插入一条记
19、录。USE pubsGOCREATE VIEW b_title AS SELECT title_id,title,price FROM titlesWHERE type=businessGOINSERT b_title VALUES(BU1122,Fishing with computer,56.00)2023-1-129第第11章章 视图视图【例】建立视图wa_publishers,用于提取表格中来自华盛顿州作家的出版商的信息/*创建一个新的视图wa_publishers*/CREATE VIEW wa_publishers AS SELECT*FROM publishersWHERE st
20、ate=WAGO/*在该视图中添加一条新的数据记录*/INSERT INTO wa_publishers(pub_id,pub_name,city,state,country)VALUES(9994,QQQ,Atlanda,GI,USA)2023-1-130第第11章章 视图视图/*重新创建一个新的视图wa_publishers_2*/CREATE VIEW wa_publishers_2 AS SELECT*FROM publishersWHERE state=WAWITH CHECK OPTIONGO/*在该视图中添加一条新的数据记录*/INSERT INTO wa_publishers(
展开阅读全文