技术开发 频道

SQL Server 2005中的新XML功能


【IT168技术文档】

    目前,很多开发人员都将SQL Server 2005作为应用程序数据库。这其中的原因是多方面的,例如开发习惯、功能强大、易于上手、对于既有开发技术的支持等。为了帮助广大读者熟悉SQL Server 2005,本文重点对SQL Server 2005提供的新XML功能进行讲解。在讲解之前,首先了解有关的基本概念。

    由于SQL Server 2000是在服务器中利用BLOB字段存储XML文本,所以不能以原格式真正使用或者引用服务器中的XML。为了使用SQL Server 2000中的XML,必须将XML抽取到应用程序层,然后使用XML语法分析程序或者文档对象模型来使用数据。

    SQL Server 2005的XML数据类型避免了这种限制,因为该类型被实现为最好原数据类型。新的数据类型可使SQL Server如同理解整型或者字符串数据那样相同的方式理解XML数据。使用XML数据类型可创建仅存储XML,或者存储XML和关系型数据的表。这种灵活性使得开发人员对结构化数据使用关系型模型,同时利用XML的半结构化数据增强该数据。当以XML数据类型列存储XML值时,有两种选择:一种是使用类型化列,在这种类型列中存储的XML数据使用XML架构集合来确保有效性。另一种是非类型化列:在这种类型列中,只要XML数据格式良好,则能够插入任何类型的XML数据。

    为帮助开发人员最有效的结合半结构化和关系型数据,SQL Server 2005的XML数据类型支持多个实现查询和修改XML数据的内建方法。这些方法可接受XQuery,它是新兴的W3C标准语言,同时还包括XPath 2.0。开发人员可以将对于XML数据类型方法的查询调用与创建查询,返回关系型和XML数据的标准T-SQL一起使用。

    除了XML数据类型以外,FOR XML和OpenXML功能在SQL Server 2005中也得到了扩展。这些功能共同支持XQuery,这样SQL Server 2005就能够通过一个功能强大的平台来实现利用半结构化数据开发富应用程序,以及非结构化数据的管理。使用所有这些添加的功能,开发人员对于数据存储和应用程序开发则有了更多的选择。下面首先介绍SQL Server 2005中的FOR XML功能。

1. SQL Server 2005中的FOR XML功能

    SQL Server 2000为SELECT语句引入了FOR XML子句。FOR XML子句能够将SELECT语句返回的关系型行集合聚合为XML数据。如下所示,服务器中的FOR XML支持三种模式,这些模式提供了不同的转换方式:

    RAW:RAW模式为每行都生成名为row的单个元素。
   AUTO:该模式根据衍生关系和SELECT语句中数据的顺序,推断出一种简单的,一个元素名称代表一个级别的层次。 
   EXPLICIT:该模式通过设置单个的SQL查询,能够生成专用的可映射为几乎所有XML结构的行集合格式。

    为了高效生成大型文档,所有这三个模式都设计用于生成能够以流方式传输的XML数据。虽然EXPLICIT模式能够成功实现格式化目标,但是生成行集合的格式化SQL表达式很复杂。使用SQL Server 2005后,这种与FOR XML模式相关的复杂性在很大范围内得以简化。除此之外,FOR XML查询还集成了XML数据类型。

    如果执行任何类型的XML查询(例如,SELECT * FROM HumanResources.Employee FOR XML AUTO),那么开发人员将注意到,除了在结果中添加了下划线不同之外,在SQL Server Management Studio中看到的结果看起来非常类似于SQL Server 2000 Query Analyzer中的XML结果。这意味着可以单击这些结果。单击结果将显示良好的XML视图,从而便于查看XML结果。

    下面将介绍SQL Server 2005添加的FOR XML子句的新扩展功能。

    FOR XML子句使用引入的XML数据类型能够使用新的TYPE指令直接生成XML实例。例如,以下查询以XML数据类型实例返回Employee元素,而不是nvarchar(max)实例,后者是在不使用TYPE指令的情况下的输出:

SELECT * FROM HumanResources.Employee as Employee FOR XML AUTO, TYPE


0
相关文章