实现SQL Server数据库中的视图和查询.ppt
《实现SQL Server数据库中的视图和查询.ppt》由会员分享,可在线阅读,更多相关《实现SQL Server数据库中的视图和查询.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1视图基本概念视图基本概念一、视图基本概念一、视图基本概念1基本表基本表基本表是独立存在的表。在基本表是独立存在的表。在SQLServer中中创建了一个基本表,那么可以在表中添加记创建了一个基本表,那么可以在表中添加记录,这些记录存放在硬盘上。录,这些记录存放在硬盘上。“学生表学生表”、“课课程表程表”、“成绩表成绩表”等等,都是基本表。等等,都是基本表。SQLServer2000实用教程实用教程2视图视图视图看上去同表似乎一模一样,具有一组命名的视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在物理上字段和数据项,但它其实是一个虚拟的表,在物理上并不实际存在。
2、视图是由查询数据库表产生的,它限并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。制了用户能看到和修改的数据。视图一旦定义后,就视图一旦定义后,就可以和基本表一样被查询、被删除,也可以在一个视可以和基本表一样被查询、被删除,也可以在一个视图基础上再定义新的视图。图基础上再定义新的视图。视图兼有表和查询的特点:与查询相类似的是,视图兼有表和查询的特点:与查询相类似的是,视图可以用来从一个或多个相关联的表或视图中提取视图可以用来从一个或多个相关联的表或视图中提取有用信息;与表相类似的是,视图可以用来更新其中有用信息;与表相类似的是,视图可以用来更新其中的信息,并将更新结果永
3、久保存在磁盘上。我们可以的信息,并将更新结果永久保存在磁盘上。我们可以用视图使数据暂时从数据库中分离成为游离数据,以用视图使数据暂时从数据库中分离成为游离数据,以便在主系统之外收集和修改数据。便在主系统之外收集和修改数据。SQLServer2000实用教程实用教程二、视图的优缺点二、视图的优缺点 当对通过视图看到的数据进行修改时,相应当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映的数据发生变化,则这种变化也可以自动地反映到视图中。到视图中。视图有很多优点,主要表现在:视图有很多
4、优点,主要表现在:1 1、视点集中视点集中 视视图图集集中中即即是是使使用用户户只只关关心心它它感感兴兴趣趣的的某某些些特特定定数数据据和和他他们们所所负负责责的的特特定定任任务务。这这样样通通过过只只允允许许用用户户看看到到视视图图中中所所定定义义的的数数据据而而不不是是视视图图引引用表中的数据而提高了数据的安全性。用表中的数据而提高了数据的安全性。SQLServer2000实用教程实用教程 2 2、简化操作、简化操作 视视图图大大大大简简化化了了用用户户对对数数据据的的操操作作。因因为为在在定定义义视视图图时时,若若视视图图本本身身就就是是一一个个复复杂杂查查询询的的结结果果集集,这这样样
5、在在每每一一次次执执行行相相同同的的查查询询时时,不不必必重重新新写写这这些些复复杂杂的的查查询询语语句句,只只要要一一条条简简单单的的查查询询视视图图语语句句即即可可。可可见见视视图图向向用用户户隐隐藏藏了了表与表之间的复杂的连接操作。表与表之间的复杂的连接操作。3 3、定制数据、定制数据 视视图图能能够够实实现现让让不不同同的的用用户户以以不不同同的的方方式式看看到到不不同同或或相相同同的的数数据据集集。因因此此,当当有有许许多多不不同同水水平平的的用用户户共共用用同同一一数数据据库库时时,这这显显得得极极为为重要重要。SQLServer2000实用教程实用教程 4 4、合并分割数据、合并
6、分割数据 在有些情况下,由于表中数据量太大,故在在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分割或垂直分割,但表的设计时常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。表的结构的变化却对应用程序产生不良的影响。如果使用视图就可以重新保持原有的结构关系,如果使用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。通过视图来重载数据。5 5、组合分区数据组合分区数据用户可以把来自不同表的两个或多个查询用户可以把来自不同表的两个或多个查询结果组合成单一的结果集。这在用户看
7、来是一个结果组合成单一的结果集。这在用户看来是一个单独的表,称为分区视图。单独的表,称为分区视图。SQLServer2000实用教程实用教程 6 6、安全性、安全性视图可以作为一种安全机制。通过视图用视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到的数据。其它户只能查看和修改他们所能看到的数据。其它数据库或表既不可见也不可以访问。如果某一数据库或表既不可见也不可以访问。如果某一用户想要访问视图的结果集,必须授予其访问用户想要访问视图的结果集,必须授予其访问权限。视图所引用表的访问权限与视图权限的权限。视图所引用表的访问权限与视图权限的设置互不影响。设置互不影响。7、视图的缺点、
8、视图的缺点视图的缺点主要表现在其对数据修改的限视图的缺点主要表现在其对数据修改的限制上。制上。SQLServer2000实用教程实用教程三、使用视图的场合三、使用视图的场合 1)表的行或列的子集。)表的行或列的子集。2)两个或多个表的联合。)两个或多个表的联合。3)两个或多个表的连接。)两个或多个表的连接。4)其他视图的子集。)其他视图的子集。5)视图与表的组合。)视图与表的组合。SQLServer2000实用教程实用教程2创建视图创建视图创建视图时应该注意以下情况:创建视图时应该注意以下情况:只能在当前数据库中创建视图。只能在当前数据库中创建视图。视图中最多只能引用视图中最多只能引用1024
9、1024列。列。如如果果视视图图引引用用的的基基表表或或者者视视图图被被删删除除,则则该该视视图图不不能能再再被被使使用用,直直到到创创建建新新的的基基表表或或者视图。者视图。如如果果视视图图中中某某一一列列是是函函数数、数数学学表表达达式式、常常量量或或者者来来自自多多个个表表的的列列名名相相同同,则则必必须须为为列列定义名称。定义名称。SQLServer2000实用教程实用教程当当视视图图所所引引用用不不同同基基表表的的列列中中有有相相同同列列名名时时或或者者希希望望给给视视图图中中的的列列指指定定新新的的列列名名时时则则需要重新指定列的别名。需要重新指定列的别名。不不能能在在视视图图上上
10、创创建建索索引引,不不能能在在规规则则、缺省、触发器的定义中引用视图。缺省、触发器的定义中引用视图。当当通通过过视视图图查查询询数数据据时时,SQLServer要要检检查查以以确确保保语语句句中中涉涉及及的的所所有有数数据据库库对对象象存存在在,而且数据修改语句不能违反数据完整性规则。而且数据修改语句不能违反数据完整性规则。视视图图的的名名称称必必须须遵遵循循标标识识符符的的规规则则,且且对对每每个个用用户户必必须须是是唯唯一一的的。此此外外,该该名名称称不不得得与该用户拥有的任何表的名称相同。与该用户拥有的任何表的名称相同。SQLServer2000实用教程实用教程 注意:注意:一个视图可以
11、基于一个或若干个基一个视图可以基于一个或若干个基表,也可以基于一个或若干个视图,同时也可表,也可以基于一个或若干个视图,同时也可以基于基表和视图的混合体。以基于基表和视图的混合体。SQLServer2000实用教程实用教程使用使用Transact-SQL语言创建视图语言创建视图 创建视图的语法格式如下:创建视图的语法格式如下:CREATE CREATE VIEW VIEW.视视图图名名(列名列名,.,.n)n)WITH WITH ENCRYPTION|SCHEMABINDING|VIEW_METADATAENCRYPTION|SCHEMABINDING|VIEW_METADATAAS AS S
12、ELECT SELECT查询语句查询语句 WITH CHECK OPTIONWITH CHECK OPTIONSQLServer2000实用教程实用教程参数说明:参数说明:(1)(1)视视图图名名称称必必须须符符合合标标识识符符规规则则。可可以以选选择择是是否指定视图所有者名称。否指定视图所有者名称。(2)(2)CREATEVIEW子句中的列名是视图中显示子句中的列名是视图中显示的列名。只有在下列情况下,才必须命名的列名。只有在下列情况下,才必须命名CREATEVIEW子句中的列名:当列是从算术子句中的列名:当列是从算术表达式、函数或常量派生的,两个或更多的列可表达式、函数或常量派生的,两个或
13、更多的列可能会具有相同的名称(通常是因为联接),视图能会具有相同的名称(通常是因为联接),视图中的某列被赋予了不同于派生来源列的名称。当中的某列被赋予了不同于派生来源列的名称。当然也可以在然也可以在SELECT语句中指派列名。语句中指派列名。注意注意:如果未指定列名,如果未指定列名,则视图则视图列将列将获获得与得与 SELECT SELECT 语语句中的列相同的名称。句中的列相同的名称。SQLServer2000实用教程实用教程 (3 3)定定义义视视图图的的语语句句是是一一个个 SELECTSELECT查查询询语语句句。该该语语句句可可以以使使用用多多个个表表或或其其它它视视图图。若若要要从
14、从创创建建视视图图的的 SELECT SELECT 子子句句所所引引用用的的对对象象中中选选择择,必必须须具具有有适适当当的的权权限限。视视图图不不必必是是具具体体某某个个表表的的行行和和列列的的简简单单子子集集。可可以以用用具具有有任任意意复复杂杂性性的的 SELECT SELECT 子子句句,使使用用多多个个表表或或其其它它视视图图来来创创建视图。建视图。(4 4)在索引视图定义中,)在索引视图定义中,SELECT SELECT 语句必须是语句必须是单个表的语句或带有可选聚合的多表单个表的语句或带有可选聚合的多表 JOINJOIN。SQLServer2000实用教程实用教程 (5 5)在在
15、CREATE CREATE VIEWVIEW语语句句中中,对对于于SELECTSELECT查询语句有如下限制:查询语句有如下限制:创建视图的用户必须对该视图所参照或引用创建视图的用户必须对该视图所参照或引用的表或视图具有适当的权限。的表或视图具有适当的权限。在查询语句中,不能包含在查询语句中,不能包含ORDER BYORDER BY(如果如果要包含的话要包含的话SELECTSELECT子句中要用子句中要用TOP n percentTOP n percent)、COMPUTECOMPUTE或或COMPUTE BYCOMPUTE BY关键字。也不能包关键字。也不能包含含INTOINTO关键字。关键
16、字。不能在临时表中定义视图不能在临时表中定义视图(不能引用临时表不能引用临时表)。SQLServer2000实用教程实用教程 (6 6)WITH WITH CHECK CHECK OPTIONOPTION:强强制制视视图图上上执执行行的的所所有有数数据据修修改改语语句句都都必必须须符符合合由由 SELECTSELECT查查询询语语句句设设置置的的准准则则。通通过过视视图图修修改改数数据据行行时时,WITH WITH CHECK CHECK OPTION OPTION 可可确确保保提提交修改后,仍可通过视图看到修改的数据。交修改后,仍可通过视图看到修改的数据。(7 7)WITH WITH ENC
17、RYPTIONENCRYPTION:表表 示示 SQL SQL Server Server 加加密密包包含含 CREATE CREATE VIEW VIEW 语语句句文文本本的的系系统统表表列列。使使用用 WITH WITH ENCRYPTION ENCRYPTION 可可防防止止将视图作为将视图作为 SQL Server SQL Server 复制的一部分发布。复制的一部分发布。SQLServer2000实用教程实用教程 (8)SCHEMABINDING:将视图绑定到架将视图绑定到架构上。指定构上。指定 SCHEMABINDING 时,时,SELECT查询语句必须包含所引用的表、视图或用户定
18、查询语句必须包含所引用的表、视图或用户定义函数的两部分名称义函数的两部分名称(owner.object)。不能除去不能除去参与用架构绑定子句创建的视图中的表或视图,参与用架构绑定子句创建的视图中的表或视图,除非该视图已被除去或更改,不再具有架构绑除非该视图已被除去或更改,不再具有架构绑定。否则,定。否则,SQL Server 会产生错误。另外,如会产生错误。另外,如果对参与具有架构绑定的视图的表执行果对参与具有架构绑定的视图的表执行 ALTER TABLE 语句,而这些语句又会影响该架构绑定语句,而这些语句又会影响该架构绑定视图的定义,则这些语句将会失败视图的定义,则这些语句将会失败。SQLS
19、erver2000实用教程实用教程 (9)VIEW_METADATA:指定为引用视图的查询指定为引用视图的查询请求浏览模式的元数据时,请求浏览模式的元数据时,SQLServer将向将向DBLIB、ODBC和和OLEDBAPI返回有关视图的元数据信息,返回有关视图的元数据信息,而不是返回基表或表。浏览模式的元数据是由而不是返回基表或表。浏览模式的元数据是由SQLServer向客户端向客户端DB-LIB、ODBC和和OLEDBAPI返返回的附加元数据,它允许客户端回的附加元数据,它允许客户端API实现可更新的客实现可更新的客户端游标。浏览模式的元数据包含有关结果集内的列所户端游标。浏览模式的元数据
20、包含有关结果集内的列所属的基表信息。属的基表信息。对于用对于用VIEW_METADATA选项创建选项创建的视图,当描述结果集中视图内的列时,浏览模式的元的视图,当描述结果集中视图内的列时,浏览模式的元数据返回与基表名相对的视图名。当用数据返回与基表名相对的视图名。当用VIEW_METADATA创建视图时,如果该视图具有创建视图时,如果该视图具有INSERT或或UPDATEINSTEADOF触发器,则视图触发器,则视图的所有列(的所有列(timestamp除外)都是可更新的。除外)都是可更新的。SQLServer2000实用教程实用教程3管理视图管理视图1、使用系统存储过程查看视图信息、使用系统
21、存储过程查看视图信息sp_help表表/视图视图sp_helptext表表/视图视图sp_depends表表/视图视图SQLServer2000实用教程实用教程2、使用、使用T-SQL语句修改视图语句修改视图ALTER VIEWALTER VIEW语句的语法格式为:语句的语法格式为:ALTERALTERVIEW VIEW.视图视图名名(列名列名,.,.n)n)WITHWITHENCRYPTION|SCHEMABINDING|VIEW_METADATAENCRYPTION|SCHEMABINDING|VIEW_METADATAAS AS SELECT SELECT查询语句查询语句 WITH CH
22、ECK OPTIONWITH CHECK OPTION参数参数说说明同明同CREATE VIEWCREATE VIEW相同。相同。SQLServer2000实用教程实用教程3、使用使用DROP VIEW删除视图删除视图删除视图的语法格式如下。删除视图的语法格式如下。DROP VIEW视图名视图名1,视图名,视图名n使用该语句一次可以删除多个视图。使用该语句一次可以删除多个视图。SQLServer2000实用教程实用教程4通过视图访问数据通过视图访问数据 使用视图管理表中的数据包括插入、更新使用视图管理表中的数据包括插入、更新和删除三种操作,在操作时要注意以下几点:和删除三种操作,在操作时要注意
23、以下几点:修改视图中的数据时,可以对基于两个以修改视图中的数据时,可以对基于两个以上基表或视图的视图进行修改,但是不能同时上基表或视图的视图进行修改,但是不能同时影响两个或者多个基表,每次修改都只能影响影响两个或者多个基表,每次修改都只能影响一个基表。一个基表。不能修改那些通过计算得到的列,例如年龄不能修改那些通过计算得到的列,例如年龄和平均分等。和平均分等。若在创建视图时定义了若在创建视图时定义了 WITH CHECK WITH CHECK OPTIONOPTION选项,那么使用视图修改基表中的数选项,那么使用视图修改基表中的数据时,必须保证修改后的数据满足定义视图的据时,必须保证修改后的数
24、据满足定义视图的限制条件。限制条件。SQLServer2000实用教程实用教程 执行执行UPDATEUPDATE或或DELETEDELETE命令时,所更新或删除命令时,所更新或删除的数据必须包含在视图的结果集中。的数据必须包含在视图的结果集中。如果视图引用多个表时,无法用如果视图引用多个表时,无法用DELETEDELETE命令删命令删除数据。除数据。如果视图引用多个表,使用如果视图引用多个表,使用INSERTINSERT或或UPDATEUPDATE语句对视图进行操作时,被插入或更新的列必须属语句对视图进行操作时,被插入或更新的列必须属于同一个表。于同一个表。视图的字段来自集合函数,则此视图不允
25、许修改视图的字段来自集合函数,则此视图不允许修改操作。操作。若若视视图图定定义义中中含含有有GROUPBY子子句句,则则此此视视图图不允许修改操作。不允许修改操作。若若视视图图定定义义中中含含有有DISTINCT短短语语,则则此此视视图图不不允许修改操作。允许修改操作。一一个个不不允允许许修修改改操操作作视视图图上上定定义义的的视视图图,也也不不允允许修改操作。许修改操作。SQLServer2000实用教程实用教程5SELECT语句语句SELECT语句能够从数据库中检索出符合用户需求的数据,语句能够从数据库中检索出符合用户需求的数据,并将结果以表格的形式返回,是并将结果以表格的形式返回,是SQ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现SQL Server数据库中的视图和查询 实现 SQL Server 数据库 中的 视图 查询
限制150内