您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > SQL Server 2008基础教程 (20)
2020年9月24日第1页第20章XML技术本章概述本章要点本章内容2020年9月24日第2页本章概述在支持的技术中,可扩展标记语言(eXtensibleMarkupLanguage,简称为XML)被认为是最重要的技术之一。XML已经对数据的存储和处理产生了深远的影响,并且今后其优势会更好地展现出来。实际上,XML是一系列相关技术的集合,这些技术包括DTD、XMLSchema、CSS和XSLT等。本章将介绍MicrosoftSQLServer2008系统中获支持的XML技术。2020年9月24日第3页本章要点为什么要使用XML语言类型化数据和非类型化数据的特点XML数据类型的特点XML架构的作用和使用方式XQuery/exist/modify技术的特点FORXML子句的类型和使用方式XML索引的类型和特点OPENXML函数的作用和使用方式2020年9月24日第4页本章内容20.1概述20.2XML数据类型20.3查询XML数据20.4使用FORXML子句20.5使用XML索引20.6使用OPENXML函数20.7本章小结20.1概述MicrosoftSQLServer2008系统通过引入更多的功能增强了对XML数据的支持。MicrosoftSQLServer系统提供了XML数据类型用来存储XML数据。XQuery和XSD(eXtensibleschemadefinition,即:可扩展的架构定义)支持这种XML数据。并且这种XML数据与MicrosoftSQLServer2008关系型数据库引擎紧密集成。MicrosoftSQLServer2008提供了XML触发器、XML数据复制、大容量的XML数据插入等操作的支持。2020年9月24日第5页20.2XML数据类型XML数据类型是MicrosoftSQLServer2008系统为了增强XML技术支持而引入的新功能。就像INT、CHAR等数据类型一样,XML数据类型可以用在表中列的定义中、变量的定义中和存储过程的参数定义中。XML数据类型既可以存储类型化数据,也可以存储非类型化数据。如果存储在XML列中的数据没有与XSD架构关联,那么这种数据是非类型化数据。如果存储在XML列中的数据与XSD架构关联,那么这种数据就是类型化数据。2020年9月24日第6页创建ProductInfo表2020年9月24日第7页使用INSERT语句插入XML数据2020年9月24日第8页使用INSERT语句插入一个不正确的XML数据2020年9月24日第9页使用INSERT语句插入一个不一致但是正确的XML数据2020年9月24日第10页定义ProductDescXMLSchema架构2020年9月24日第11页定义一个与ProductDescXMLSchema架构关联的表2020年9月24日第12页插入符合XSD架构的XML文档2020年9月24日第13页插入不符合XSD架构的XML文档2020年9月24日第14页查看定义的XSD架构文本信息2020年9月24日第15页20.3查询XML数据对于XML列中的数据,可以使用相应的技术对其进行操纵,这些技术包括XQuery技术、Exist技术和Modify技术。下面介绍这些技术。2020年9月24日第16页使用XQuery技术XQuery是一种可以查询结构化或半结构化XML数据的语言。由于MicrosoftSQLServer2008系统提供了对XML数据类型的支持,因此可以将XML文档存储在数据库中,然后使用XQuery语句进行查询。XQuery基于现有的XPath查询语言,并且支持迭代、排序结果以及构造必须的XML的功能。Transact-SQL支持XQuery语言的子集。2020年9月24日第17页查询多个元素2020年9月24日第18页查询单个元素2020年9月24日第19页查询类型化数据2020年9月24日第20页使用XML数据类型方法MicrosoftSQLServer2008系统提供了一些内置的可以用于XML数据类型的方法。与普通关系型数据不同的是,XML数据是分层次的,具有完整的结构和元数据。XML数据类型方法可以用于提取存储在XML数据类型中的XML文档的内容。这些方法包括Exist方法、Modify方法、Query方法、Value方法等。Query方法在20.3节中已经涉及了,下面主要讲述Exist方法和Modify方法。2020年9月24日第21页使用XMLExist方法2020年9月24日第22页使用XMLModify方法2020年9月24日第23页20.4使用FORXML子句使用FORXML子句可以把MicrosoftSQLServer2008系统的表中数据检索出来并且自动表示成XML的格式。在MicrosoftSQLServer2000版本中,FORXML有3种模式,即RAW、AUTO和EXPLICIT。在MicrosoftSQLServer2008系统中,由于增加了XML数据类型,因此也增强了FORXML的功能,这些增强功能包括TYPE模式、PATH模式、嵌套FORXML查询和内联XSD架构等。下面将详细地研究这些内容。2020年9月24日第24页FORXMLRAWFORXMLRAW是最简单的FORXML模式,该模式将查询结果集中的每一行转换为带有通用标识符row或可能提供元素名称的XML元素。在默认情况下,行集中非NULL的每列值都将映射为row元素的一个属性。也就是说,RAW模式表示元素名称是row,属性名称是列名称或列的别名。2020年9月24日第25页使用FORXMLRAW模式2020年9月24日第26页按照XML结构查看检索结果2020年9月24日第27页FORXMLAUTO使用FORXMLAUTO也可以返回XML文档。但是,使用AUTO关键字和使用RAW关键字得到的XML文档形式是不同的。使用AUTO关键字,MicrosoftSQLServer使用表名称作为元素名称,使用列名称作为属性名。SELECT关键字后面的列的顺序用于确定XML文档的层次。2020年9月24日第28页使用FORXMLAUTO2020年9月24日第29页使用FORXMLEXPLICIT2020年9月24日第30页使用TYPE指令由于SQLServer2008系统支持XML数据类型,因此可以通过指定TYPE指令,将FORXML查询结果返回为XML数据类型,方便在服务器上处理FORXML的查询结果。2020年9月24日第31页使用FORXMLPATH作为一种新增功能,FORXMLPATH子句比FORXMLRAW和FORXMLAUTO子句的功能强大,并且比FORXMLEXPLICIT子句更加简单。FORXMLPATH子句允许用户指定XML树状数据中的路径。FORXMLPATH子句可以更加简单地完成FORXMLEXPLICIT子句具备的功能。2020年9月24日第32页嵌套的FORXML查询MicrosoftSQLServer2000系统限定FORXML子句只能用在查询语句的顶层,不能在子查询中使用FORXML子句。但是,MicrosoftSQLServer2008系统增强了这方面的功能,用户可以在子查询中使用FORXML子句,从而实现嵌套的FORXML查询。例如,在如图20-24所示的示例中,使用了一个嵌套的FORXML查询。2020年9月24日第33页内联XSD架构生成在FORXML子句中,可以请求在查询返回结果的同时返回一个内联架构。如果需要XSD架构,可以使用XMLSCHEMA关键字。需要注意的是,只能在RAW和AUTO模式中指定XMLSCHEMA,不能在EXPLICIT模式和PATH模式中指定内联XSD架构2020年9月24日第34页20.5使用XML索引XML数据类型支持最大达2GB的数据。当查询XML数据时,XML数据将会对系统的性能带来巨大的影响。为了提高XML查询的性能,可以在具有XML数据类型的列上创建索引。XML索引可以分为两个类别,即主XML索引和辅助XML索引。2020年9月24日第35页创建XML索引2020年9月24日第36页20.6使用OPENXML函数20.4节已经讲过,使用FORXML可以把MicrosoftSQLServer系统中的数据生成XML文档,使用OPENXML则是使用FORXML的逆过程。也就是说,使用OPENXML可以从XML文档中返回数据的行集。2020年9月24日第37页使用OPENXML函数示例2020年9月24日第38页20.7本章小结本章介绍了XML技术。首先,介绍了XML技术的演变和发展历程。其次,详细介绍了XML数据类型的特点和使用方式,分析了类型化数据和非类型化数据的特点。接下来,对查询XML数据技术进行了分析。之后,介绍了XML索引的类型和特点。最后,讨论了OPENXML函数的作用和使用方式。2020年9月24日第39页【思考和练习】1.为什么要使用XML语言?2.如何使用XML数据类型?3.类型化数据和非类型化数据的特点是什么?4.XML架构的作用和使用方式是什么?5.如何使用XQuery技术?6.Exist技术的特点是什么?7.Modify技术的特点是什么?8.FOXXMLPATH的作用是什么?9.XML索引的类型和特点是什么?10.OPENXML函数的作用和使用方式是什么?2020年9月24日第40页
本文标题:SQL Server 2008基础教程 (20)
链接地址:https://www.777doc.com/doc-7054479 .html