《SQL Server 2008基础教程 (20).ppt》由会员分享,可在线阅读,更多相关《SQL Server 2008基础教程 (20).ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SQL Server 2008基础教程 (20) Four short words sum up what has lifted most successful Four short words sum up what has lifted most successful individuals above the crowd: a little bit more. individuals above the crowd: a little bit more. -author -author -date-date本章概述本章概述l在支持在支持WWW的技术中,可扩展标记语言的技术中,可扩展标记语
2、言(eXtensible Markup Language,简称为,简称为XML)被认为是最重要的技术之一。被认为是最重要的技术之一。XML已已经对数据的存储和处理产生了深远的影响,经对数据的存储和处理产生了深远的影响,并且今后其优势会更好地展现出来。实际并且今后其优势会更好地展现出来。实际上,上,XML是一系列相关技术的集合,这些是一系列相关技术的集合,这些技术包括技术包括DTD、XML Schema、CSS和和XSLT等。本章将介绍等。本章将介绍Microsoft SQL Server 2008系统中获支持的系统中获支持的XML技术。技术。本章要点本章要点l为什么要使用为什么要使用XML语言
3、语言l类型化数据和非类型化数据的特点类型化数据和非类型化数据的特点lXML数据类型的特点数据类型的特点lXML架构的作用和使用方式架构的作用和使用方式lXQuery/exist/modify技术的特点技术的特点lFOR XML子句的类型和使用方式子句的类型和使用方式lXML索引的类型和特点索引的类型和特点lOPENXML函数的作用和使用方式函数的作用和使用方式本章内容本章内容20.1 概述概述20.2 XML数据类型数据类型20.3 查询查询XML数据数据20.4 使用使用FOR XML子句子句20.5 使用使用XML索引索引20.6 使用使用OPENXML函数函数20.7 本章小结本章小结2
4、0.1 概述概述lMicrosoft SQL Server 2008系统通过引入更多系统通过引入更多的功能增强了对的功能增强了对XML数据的支持。数据的支持。Microsoft SQL Server系统提供了系统提供了XML数据类型用来存储数据类型用来存储XML数据。数据。XQuery和和XSD (eXtensible schema definition,即:可扩展的架构定义,即:可扩展的架构定义)支持这种支持这种XML数据。并且这种数据。并且这种XML数据与数据与Microsoft SQL Server 2008关系型数据库引擎紧密集成。关系型数据库引擎紧密集成。Microsoft SQL
5、Server 2008提供了提供了XML触发器、触发器、XML数据复制、大容量的数据复制、大容量的XML数据插入等操作的数据插入等操作的支持。支持。20.2 XML数据类型数据类型lXML数据类型是数据类型是Microsoft SQL Server 2008系系统为了增强统为了增强XML技术支持而引入的新功能。就像技术支持而引入的新功能。就像INT、CHAR等数据类型一样,等数据类型一样,XML数据类型可数据类型可以用在表中列的定义中、变量的定义中和存储过以用在表中列的定义中、变量的定义中和存储过程的参数定义中。程的参数定义中。XML数据类型既可以存储类型数据类型既可以存储类型化数据,也可以存
6、储非类型化数据。如果存储在化数据,也可以存储非类型化数据。如果存储在XML列中的数据没有与列中的数据没有与XSD架构关联,那么这种架构关联,那么这种数据是非类型化数据。如果存储在数据是非类型化数据。如果存储在XML列中的数列中的数据与据与XSD架构关联,那么这种数据就是类型化数架构关联,那么这种数据就是类型化数据。据。创建创建ProductInfo表表使用使用INSERT语句插入语句插入XML数据数据使用使用INSERT语句插入一个不正语句插入一个不正确的确的XML数据数据使用使用INSERT语句插入一个不一语句插入一个不一致但是正确的致但是正确的XML数据数据定义定义ProductDescX
7、MLSchema架构架构定义一个与定义一个与ProductDescXMLSchema架构架构关联的表关联的表插入符合插入符合XSD架构的架构的XML文档文档插入不符合插入不符合XSD架构的架构的XML文档文档查看定义的查看定义的XSD架构文本信息架构文本信息20.3 查询查询XML数据数据l对于对于XML列中的数据,可以使用相应的技列中的数据,可以使用相应的技术对其进行操纵,这些技术包括术对其进行操纵,这些技术包括XQuery技技术、术、Exist技术和技术和Modify技术。下面介绍这技术。下面介绍这些技术。些技术。使用使用XQuery技术技术lXQuery是一种可以查询结构化或半结构化是一
8、种可以查询结构化或半结构化XML数据的语言。由于数据的语言。由于Microsoft SQL Server 2008系统提供了对系统提供了对XML数据类型的数据类型的支持,因此可以将支持,因此可以将XML文档存储在数据库文档存储在数据库中,然后使用中,然后使用XQuery语句进行查询。语句进行查询。XQuery基于现有的基于现有的XPath查询语言,并且查询语言,并且支持迭代、排序结果以及构造必须的支持迭代、排序结果以及构造必须的XML的功能。的功能。Transact-SQL支持支持XQuery语言语言的子集。的子集。查询多个元素查询多个元素查询单个元素查询单个元素查询类型化数据查询类型化数据使
9、用使用XML数据类型方法数据类型方法lMicrosoft SQL Server 2008系统提供了一系统提供了一些内置的可以用于些内置的可以用于XML数据类型的方法。数据类型的方法。与普通关系型数据不同的是,与普通关系型数据不同的是,XML数据是数据是分层次的,具有完整的结构和元数据。分层次的,具有完整的结构和元数据。XML数据类型方法可以用于提取存储在数据类型方法可以用于提取存储在XML数据类型中的数据类型中的XML文档的内容。这些文档的内容。这些方法包括方法包括Exist方法、方法、Modify方法、方法、Query方法、方法、Value方法等。方法等。Query方法在方法在20.3节节中
10、已经涉及了,下面主要讲述中已经涉及了,下面主要讲述Exist方法和方法和Modify方法。方法。使用使用XML Exist方法方法使用使用XML Modify方法方法20.4 使用使用FOR XML子句子句l使用使用FOR XML子句可以把子句可以把Microsoft SQL Server 2008系统的表中数据检索出来并且自动系统的表中数据检索出来并且自动表示成表示成XML的格式。在的格式。在Microsoft SQL Server 2000版本中,版本中,FOR XML有有3种模式,即种模式,即RAW、AUTO和和EXPLICIT。在。在Microsoft SQL Server 2008系
11、统中,由于增加了系统中,由于增加了XML数据类型,因此也数据类型,因此也增强了增强了FOR XML的功能,这些增强功能包括的功能,这些增强功能包括TYPE模式、模式、PATH模式、嵌套模式、嵌套FOR XML查询和查询和内联内联XSD架构等。下面将详细地研究这些内容。架构等。下面将详细地研究这些内容。FOR XML RAWlFOR XML RAW是最简单的是最简单的FOR XML模式,模式,该模式将查询结果集中的每一行转换为带该模式将查询结果集中的每一行转换为带有通用标识符有通用标识符或可能提供元素名称或可能提供元素名称的的XML元素。在默认情况下,行集中非元素。在默认情况下,行集中非NULL
12、的每列值都将映射为的每列值都将映射为元素的一元素的一个属性。也就是说,个属性。也就是说,RAW模式表示元素名模式表示元素名称是称是row,属性名称是列名称或列的别名。,属性名称是列名称或列的别名。使用使用FOR XML RAW模式模式按照按照XML结构查看检索结果结构查看检索结果FOR XML AUTOl使用使用FOR XML AUTO也可以返回也可以返回XML文档。文档。但是,使用但是,使用AUTO关键字和使用关键字和使用RAW关键关键字得到的字得到的XML文档形式是不同的。使用文档形式是不同的。使用AUTO关键字,关键字,Microsoft SQL Server使使用表名称作为元素名称,使
13、用列名称作为用表名称作为元素名称,使用列名称作为属性名。属性名。SELECT关键字后面的列的顺序关键字后面的列的顺序用于确定用于确定XML文档的层次。文档的层次。使用使用FOR XML AUTO使用使用FOR XML EXPLICIT使用使用TYPE指令指令l由于由于SQL Server 2008系统支持系统支持XML数据数据类型,因此可以通过指定类型,因此可以通过指定TYPE指令,将指令,将FOR XML查询结果返回为查询结果返回为XML数据类型,数据类型,方便在服务器上处理方便在服务器上处理FOR XML的查询结果。的查询结果。使用使用FOR XML PATHl作为一种新增功能,作为一种新
14、增功能,FOR XML PATH子句子句比比FOR XML RAW和和FOR XML AUTO子句子句的功能强大,并且比的功能强大,并且比FOR XML EXPLICIT子句更加简单。子句更加简单。FOR XML PATH子句允许子句允许用户指定用户指定XML树状数据中的路径。树状数据中的路径。FOR XML PATH子句可以更加简单地完成子句可以更加简单地完成FOR XML EXPLICIT子句具备的功能。子句具备的功能。嵌套的嵌套的FOR XML查询查询lMicrosoft SQL Server 2000系统限定系统限定FOR XML子句只能用在查询语句的顶层,不能子句只能用在查询语句的顶
15、层,不能在子查询中使用在子查询中使用FOR XML子句。但是,子句。但是,Microsoft SQL Server 2008系统增强了这系统增强了这方面的功能,用户可以在子查询中使用方面的功能,用户可以在子查询中使用FOR XML子句,从而实现嵌套的子句,从而实现嵌套的FOR XML查询。查询。l例如,在如图例如,在如图20-24所示的示例中,使用了所示的示例中,使用了一个嵌套的一个嵌套的FOR XML查询。查询。内联内联XSD架构生成架构生成l在在FOR XML子句中,可以请求在查询返回子句中,可以请求在查询返回结果的同时返回一个内联架构。如果需要结果的同时返回一个内联架构。如果需要XSD架
16、构,可以使用架构,可以使用XMLSCHEMA关键字。关键字。需要注意的是,只能在需要注意的是,只能在RAW和和AUTO模式模式中指定中指定XMLSCHEMA,不能在,不能在EXPLICIT模式和模式和PATH模式中指定内联模式中指定内联XSD架构架构20.5 使用使用XML索引索引lXML数据类型支持最大达数据类型支持最大达2GB的数据。当的数据。当查询查询XML数据时,数据时,XML数据将会对系统的数据将会对系统的性能带来巨大的影响。为了提高性能带来巨大的影响。为了提高XML查询查询的性能,可以在具有的性能,可以在具有XML数据类型的列上数据类型的列上创建索引。创建索引。lXML索引可以分为
17、两个类别,即主索引可以分为两个类别,即主XML索索引和辅助引和辅助XML索引。索引。创建创建XML索引索引20.6 使用使用OPENXML函数函数l20.4节已经讲过,使用节已经讲过,使用FOR XML可以把可以把Microsoft SQL Server系统中的数据生成系统中的数据生成XML文档,使用文档,使用OPENXML则是使用则是使用FOR XML的逆过程。也就是说,使用的逆过程。也就是说,使用OPENXML可以从可以从XML文档中返回数据的文档中返回数据的行集。行集。使用使用OPENXML函数示例函数示例20.7 本章小结本章小结l本章介绍了本章介绍了XML技术。首先,介绍了技术。首先
18、,介绍了XML技术的演变和发展历程。其次,详细介绍技术的演变和发展历程。其次,详细介绍了了XML数据类型的特点和使用方式,分析数据类型的特点和使用方式,分析了类型化数据和非类型化数据的特点。接了类型化数据和非类型化数据的特点。接下来,对查询下来,对查询XML数据技术进行了分析。数据技术进行了分析。之后,介绍了之后,介绍了XML索引的类型和特点。最索引的类型和特点。最后,讨论了后,讨论了OPENXML函数的作用和使用函数的作用和使用方式。方式。【思考和练习思考和练习】1. 为什么要使用为什么要使用XML语言?语言?2. 如何使用如何使用XML数据类型?数据类型?3. 类型化数据和非类型化数据的特点是什么?类型化数据和非类型化数据的特点是什么?4. XML架构的作用和使用方式是什么?架构的作用和使用方式是什么?5. 如何使用如何使用XQuery技术?技术?6. Exist技术的特点是什么?技术的特点是什么?7. Modify技术的特点是什么?技术的特点是什么?8. FOX XML PATH的作用是什么?的作用是什么?9. XML索引的类型和特点是什么?索引的类型和特点是什么?10. OPENXML函数的作用和使用方式是什么?函数的作用和使用方式是什么?