已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1视图基本概念一、视图基本概念1基本表基本表是独立存在的表。在SQLServer中创建了一个基本表,那么可以在表中添加记录,这些记录存放在硬盘上。“学生表”、“课程表”、“成绩表”等等,都是基本表。,2视图视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在物理上并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。视图一旦定义后,就可以和基本表一样被查询、被删除,也可以在一个视图基础上再定义新的视图。视图兼有表和查询的特点:与查询相类似的是,视图可以用来从一个或多个相关联的表或视图中提取有用信息;与表相类似的是,视图可以用来更新其中的信息,并将更新结果永久保存在磁盘上。我们可以用视图使数据暂时从数据库中分离成为游离数据,以便在主系统之外收集和修改数据。,二、视图的优缺点当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。视图有很多优点,主要表现在:1、视点集中视图集中即是使用户只关心它感兴趣的某些特定数据和他们所负责的特定任务。这样通过只允许用户看到视图中所定义的数据而不是视图引用表中的数据而提高了数据的安全性。,2、简化操作视图大大简化了用户对数据的操作。因为在定义视图时,若视图本身就是一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可。可见视图向用户隐藏了表与表之间的复杂的连接操作。3、定制数据视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。因此,当有许多不同水平的用户共用同一数据库时,这显得极为重要。,4、合并分割数据在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。如果使用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。5、组合分区数据用户可以把来自不同表的两个或多个查询结果组合成单一的结果集。这在用户看来是一个单独的表,称为分区视图。,6、安全性视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到的数据。其它数据库或表既不可见也不可以访问。如果某一用户想要访问视图的结果集,必须授予其访问权限。视图所引用表的访问权限与视图权限的设置互不影响。7、视图的缺点视图的缺点主要表现在其对数据修改的限制上。,三、使用视图的场合1)表的行或列的子集。2)两个或多个表的联合。3)两个或多个表的连接。4)其他视图的子集。5)视图与表的组合。,2创建视图创建视图时应该注意以下情况:只能在当前数据库中创建视图。视图中最多只能引用1024列。如果视图引用的基表或者视图被删除,则该视图不能再被使用,直到创建新的基表或者视图。如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。,当视图所引用不同基表的列中有相同列名时或者希望给视图中的列指定新的列名时则需要重新指定列的别名。不能在视图上创建索引,不能在规则、缺省、触发器的定义中引用视图。当通过视图查询数据时,SQLServer要检查以确保语句中涉及的所有数据库对象存在,而且数据修改语句不能违反数据完整性规则。视图的名称必须遵循标识符的规则,且对每个用户必须是唯一的。此外,该名称不得与该用户拥有的任何表的名称相同。,注意:一个视图可以基于一个或若干个基表,也可以基于一个或若干个视图,同时也可以基于基表和视图的混合体。,使用Transact-SQL语言创建视图创建视图的语法格式如下:CREATEVIEW.视图名(列名,.n)WITHENCRYPTION|SCHEMABINDING|VIEW_METADATAASSELECT查询语句WITHCHECKOPTION,参数说明:(1)视图名称必须符合标识符规则。可以选择是否指定视图所有者名称。(2)CREATEVIEW子句中的列名是视图中显示的列名。只有在下列情况下,才必须命名CREATEVIEW子句中的列名:当列是从算术表达式、函数或常量派生的,两个或更多的列可能会具有相同的名称(通常是因为联接),视图中的某列被赋予了不同于派生来源列的名称。当然也可以在SELECT语句中指派列名。注意:如果未指定列名,则视图列将获得与SELECT语句中的列相同的名称。,(3)定义视图的语句是一个SELECT查询语句。该语句可以使用多个表或其它视图。若要从创建视图的SELECT子句所引用的对象中选择,必须具有适当的权限。视图不必是具体某个表的行和列的简单子集。可以用具有任意复杂性的SELECT子句,使用多个表或其它视图来创建视图。(4)在索引视图定义中,SELECT语句必须是单个表的语句或带有可选聚合的多表JOIN。,(5)在CREATEVIEW语句中,对于SELECT查询语句有如下限制:创建视图的用户必须对该视图所参照或引用的表或视图具有适当的权限。在查询语句中,不能包含ORDERBY(如果要包含的话SELECT子句中要用TOPnpercent)、COMPUTE或COMPUTEBY关键字。也不能包含INTO关键字。不能在临时表中定义视图(不能引用临时表)。,(6)WITHCHECKOPTION:强制视图上执行的所有数据修改语句都必须符合由SELECT查询语句设置的准则。通过视图修改数据行时,WITHCHECKOPTION可确保提交修改后,仍可通过视图看到修改的数据。(7)WITHENCRYPTION:表示SQLServer加密包含CREATEVIEW语句文本的系统表列。使用WITHENCRYPTION可防止将视图作为SQLServer复制的一部分发布。,(8)SCHEMABINDING:将视图绑定到架构上。指定SCHEMABINDING时,SELECT查询语句必须包含所引用的表、视图或用户定义函数的两部分名称(owner.object)。不能除去参与用架构绑定子句创建的视图中的表或视图,除非该视图已被除去或更改,不再具有架构绑定。否则,SQLServer会产生错误。另外,如果对参与具有架构绑定的视图的表执行ALTERTABLE语句,而这些语句又会影响该架构绑定视图的定义,则这些语句将会失败。,(9)VIEW_METADATA:指定为引用视图的查询请求浏览模式的元数据时,SQLServer将向DBLIB、ODBC和OLEDBAPI返回有关视图的元数据信息,而不是返回基表或表。浏览模式的元数据是由SQLServer向客户端DB-LIB、ODBC和OLEDBAPI返回的附加元数据,它允许客户端API实现可更新的客户端游标。浏览模式的元数据包含有关结果集内的列所属的基表信息。对于用VIEW_METADATA选项创建的视图,当描述结果集中视图内的列时,浏览模式的元数据返回与基表名相对的视图名。当用VIEW_METADATA创建视图时,如果该视图具有INSERT或UPDATEINSTEADOF触发器,则视图的所有列(timestamp除外)都是可更新的。,3管理视图1、使用系统存储过程查看视图信息sp_help表/视图sp_helptext表/视图sp_depends表/视图,2、使用T-SQL语句修改视图ALTERVIEW语句的语法格式为:ALTERVIEW.视图名(列名,.n)WITHENCRYPTION|SCHEMABINDING|VIEW_METADATAASSELECT查询语句WITHCHECKOPTION参数说明同CREATEVIEW相同。,3、使用DROPVIEW删除视图删除视图的语法格式如下。DROPVIEW视图名1,视图名n使用该语句一次可以删除多个视图。,4通过视图访问数据使用视图管理表中的数据包括插入、更新和删除三种操作,在操作时要注意以下几点:修改视图中的数据时,可以对基于两个以上基表或视图的视图进行修改,但是不能同时影响两个或者多个基表,每次修改都只能影响一个基表。不能修改那些通过计算得到的列,例如年龄和平均分等。若在创建视图时定义了WITHCHECKOPTION选项,那么使用视图修改基表中的数据时,必须保证修改后的数据满足定义视图的限制条件。,执行UPDATE或DELETE命令时,所更新或删除的数据必须包含在视图的结果集中。如果视图引用多个表时,无法用DELETE命令删除数据。如果视图引用多个表,使用INSERT或UPDATE语句对视图进行操作时,被插入或更新的列必须属于同一个表。视图的字段来自集合函数,则此视图不允许修改操作。若视图定义中含有GROUPBY子句,则此视图不允许修改操作。若视图定义中含有DISTINCT短语,则此视图不允许修改操作。一个不允许修改操作视图上定义的视图,也不允许修改操作。,5SELECT语句SELECT语句能够从数据库中检索出符合用户需求的数据,并将结果以表格的形式返回,是SQLServer中使用最频繁的语句之一。基本语法格式如下:SELECT列名1,列名2.INTO新表名FROM表名1,表名2.WHERE条件GROUPBY列名列表HAVING条件ORDERBY列名列表ASC|DESC其中,用表示可选项。SELECT语句至少包含两个子句:SELECT和FROM,SELECT子句指定要查询的指定表中的列,FROM子句指定查询的表。,SELECT子句SELECT子句用于指定要返回的列,其完整的语法如下:SELECTALLDISTINCTTOPnPERCENT列名AS别名别名=表达式,.n,FROM子句只要SELECT子句有要查询的列,就必须使用FROM子句指定进行查询的单个或者多个表。此外,SELECT语句要查询的数据源除了表以外还可以是视图,视图相当于一个临时表,其语法格式如下:FROM表名|视图名,.n当有多个数据源时,可以使用逗号“,”分隔,但是最多只能有16个数据源。数据源也可以像列一样指定别名,该别名只在当前的SELECT语句中起作用,方法为:数据源名AS别名,或者数据源名别名。指定别名的好处在于以较短的名字代替原本见名知意的长名。,WHERE子句WHERE子句指定查询的条件,限制返回的数据行。其语法格式如下:WHERE指定条件WHERE子句用于指定搜索条件,过滤不符合查询条件的数据记录,使用比较灵活且复杂。可以使用的条件包括比较运算、逻辑运算、范围、模糊匹配以及未知值等。,一、使用通配符*select*from表名/视图名返回from中指定的表中的所有列。二、使用指定的列select列名1,列名2,列名nfrom表名/视图名返回from中指定的表中的指定列。,三、使用TOP关键字selecttopnpercent列名四、使用DISTINCT关键字使用DISTINCT关键字时,1、无论遇到多少个空值,只返回一个。2、表达式只包含一个列名,且不能包含算术表达式。3、不能包含text、ntext和image类型字段。4、是sum、avg和count的可选关键字。,五、使用计算列六、使用列的别名1、select列名1别名1,2、select别名1=列名1,3、select列名1as别名1,七、使用SELECT语句进行无数据源检索,6使用WHERE子句select列名from表名/视图名where说明:1、中的条件数目无限制。2、where子句必须紧跟在from子句的后面。,一、使用比较运算符用于比较两个表达式是否满足条件。用于除text、ntext和image类型外的所有表达式。其结果返回值是布尔类型,即true或false。二、使用逻辑运算符三种逻辑运算符:or、and和not。,三、使用BETWEEN关键字在where子句中使用BETWEEN关键字来限制查询数据的范围。BETWEEN关键字的效果可以用含有=的表达式来代替;NOTBETWEEN关键字的效果可以用含有和、:、!或=)引入做为比较运算符的条件,子查询必须返回单个值做为外部查询中WHERE子句的比较参数。如果这样的子查询返回多个值,服务器将返回错误信息。,二、使用IN的子查询使用IN(或NOTIN)关键字引入子查询时,允许子查询返回一列零值或多个结果值。它判断IN关键字前所指定的列值是否在子查询的结果中,IN是嵌套查询中最常用的关键字。许多查询都可以通过执行一次子查询并将结果值代入外部查询的WHERE子句进行评估。在包括相关子查询的查询中,子查询依靠外部查询获得值。这意味着子查询是重复执行的,为外部查询可能选择的每一行均执行一次。可以将某些嵌套查询转化为等价的连接查询,以提高查询效率。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。,三、使用EXISTS的子查询使用EXISTS(NOTEXISTS)关键字引入一个子查询时,就相当于进行一次数据是否存在的测试。为了便于理解,我们可以把EXISTS想象为一个函数,而子查询是这个EXISTS函数的参数。它的作用是在WHERE子句中测试子查询返回的行是否存在。EXISTS子查询实际上不产生任何数据,它只返回TRUE或FALSE值。,注意:(1)EXISTS关键字前面没有列名、常量或其他表达式。(2)EXISTS所采用的嵌套查询之间的连接不是列之间的关系,而是表之间的关系,它只是测试在子查询中是否存在符合子查询中指定条件的行,所以子查询的选择列表通常几乎都是由星号(*)组成,不必列出列名。(3)事实上服务器在对外部查询的每一行数据处理时都需要进行一次嵌套查询,但这个嵌套查询不一定需要执行完,只要发现条件成立,就会退出子查询。因此从查询效率考虑,能使用EXISTS的查询就不要使用IN查询,能使用连接查询就不要使用嵌套查询。,四、用于替代表达式的子查询附:子查询与连接1、许多包含子查询的T-SQL语句都可以改为用联接表示。2、而其它一些问题只能由子查询提出。3、在Transact-SQL中,包括子查询的语句和不包括子查询但语义上等效的语句在性能方面通常没有区别。4、但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能。,查找所有曾出版过商业书籍的出版商的名称。(使用子查询)USEpubsSELECTpub_nameFROMpublishersWHEREpub_idIN(SELECTpub_idFROMtitlesWHEREtype=business),查找所有曾出版过商业书籍的出版商的名称。(使用连接)selectpub_namefrompublishersjointitlesonpublishers.pub_id=titles.pub_idwheretitles.type=business,只能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 运城医疗考试题库及答案
- 2026五年级数学下册 折线统计图的认识
- 会计凭证传递交接制度
- 企业消防包保制度
- 代账公司风险控制制度
- 市政工作制定奖惩制度
- 机械设备销售奖惩制度
- 营销团队晋升奖惩制度
- 果树认养销售奖惩制度
- 土巴兔合作公司奖惩制度
- 《UML系统分析与设计教程(第2版)》全套教学课件
- 《多元统计分析-基于R(第3版)》课件全套 费宇 第1-13章-多元统计分析与R简介-多维标度分析
- 2023年8月广西桂林市七星区专职化社区工作者招聘5人笔试历年典型考题及考点剖析附答案带详解
- TD/T 1061-2021 自然资源价格评估通则(正式版)
- 2024年一年级综合课教案
- 藏香猪的特性(下)
- 餐饮连锁公司合伙人入股协议
- 工地停工复工计划书
- MOOC 知识创新与学术规范-南京大学 中国大学慕课答案
- 《煤矿防灭火细则》培训课件2024
- 诚信315消费者权益日
评论
0/150
提交评论