2005每日一学]XML数据类型(2) 0CSDN]

发布时间:2016-12-7 5:44:37 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"2005每日一学]XML数据类型(2) 0CSDN]",主要涉及到2005每日一学]XML数据类型(2) 0CSDN]方面的内容,对于2005每日一学]XML数据类型(2) 0CSDN]感兴趣的同学可以参考一下。

一:    xml 数据类型使您可以在 SQL Server 数据库中存储 XML 文档和片段。XML 片段是缺少单个顶级元素的 XML 实例。您可以创建 xml 类型的列和变量,并在其中存储 XML 实例。请注意,xml 数据类型实例的存储表示形式不能超过 2 GB。     xml数据类型方法包括:     query() 方法(xml 数据类型)  此方法用于对 XML 实例进行查询。 value() 方法(xml 数据类型)  此方法用于从 XML 实例检索 SQL 类型的值。 exist() 方法(xml 数据类型)  此方法用于确定查询是否返回非空结果。 modify() 方法(xml 数据类型)  此方法用于指定 XML DML 语句以执行更新。 nodes() 方法(xml 数据类型)  此方法用于将 XML 拆分成多行以将 XML 文档的组成部分传播到行集中。     出于性能方面的考虑,在用于与关系值进行比较的谓词中不应使用 value() 方法,而应使用带有 sql:column() 的 exist()。例如: CREATE TABLE TEST (    A INT,    B XML ) GO INSERT INTO TEST SELECT 1,'<root a="2"/>' UNION ALL SELECT 2,'<root a="2"/>' GO 方法1: SELECT * FROM TEST WHERE B.value('/root[1][email protected]','int')=A 方法2: SELECT * FROM TEST WHERE B.exist('/root[@a=sql:column("A")]')=1 GO 性能上,方法2要比方法1好,通过执行计划,我们也可以看出,方法1的成本为60%,而方法1的成本只有40%,稍微低些:) 二:     如果对 NULL XML 实例执行 xml 数据类型方法 query()、value() 和 exist(),它们将返回 NULL。此外,modify() 不返回任何值,而 nodes() 返回行集和一个输入为 NULL 的空行集。     可以创建 xml 类型的变量、参数和列。或者,可以将 XML 架构的集合与 xml 类型的变量、参数或列关联。在这种情况下,xml 数据类型实例称为类型化实例。否则,XML 实例称为非类型化实例。 三:     XML 数据修改语言 (XML DML) 是 XQuery 语言的扩展。根据 W3C 的定义,XQuery 语言缺少数据操作 (DML) 部分。本主题所介绍的 XML DML 以及 XQuery 语言,提供了完整的功能查询和数据修改语言,您可以使用它们对 xml 数据类型进行操作。 XML DML 将下列区分大小写的关键字添加到 XQuery 中: insert delete replace value of 如 xml 数据类型中所述,您可以创建 xml 类型的变量和列,并为它们分配 XML 文档或片断。若要修改或更新这些 XML 实例,请执行下列操作: 使用 xml 数据类型的 modify() 方法(xml 数据类型)。  指定 modify() 方法中相应的 XML DML 语句。 四:     XML 实例作为二进制大型对象 (BLOB) 存储在 xml 类型列中。这些 XML 实例可以很大,并且存储的 xml 数据类型实例的二进制表示形式最大可以为 2 GB。如果没有索引,运行时将拆分这些二进制大型对象以计算非常耗时的查询。     如果在应用程序环境中经常查询 XML 二进制大型对象 (BLOB),则对 xml 类型列创建索引很有用。但是,在数据修改过程中维护索引会带来开销。 XML 索引分为两个类别: 主 XML 索引 辅助 XML 索引     若要创建主 XML 索引,请使用 CREATE PRIMARY XML INDEX Transact-SQL DDL。XML 索引不完全支持非 XML 索引的所有选项。  创建 XML 索引时请注意下列事项:  若要创建主 XML 索引,含有被索引的 XML 列的表(称为基表)必须具有主键的聚集索引。这就确保如果对基表进行了分区,便可以使用相同的分区架构和分区函数对主 XML 索引进行分区。 如果存在 XML 索引,则不能修改基表的聚集主键。在修改主键之前,必须删除表的所有 XML 索引。 您可以为单个 xml 类型列创建主 XML 索引。但不能为作为键列的 XML 类型列创建任何其他类型的索引。但是,可以将 xml 类型列包含在非 XML 索引中。表中的每个 xml 类型列可以有自己的主 XML 索引。但是,一个 xml 类型列只允许有一个主 XML 索引。 XML 索引和非 XML 索引存在于相同的命名空间中。因此,同一表的 XML 索引和非 XML 索引不能具有相同的名称。 对于 XML 索引,IGNORE_DUP_KEY 选项和 ONLINE 选项始终设置为 OFF。您可以将这些选项指定为 OFF。  将用户表的文件组和分区信息应用于 XML 索引。用户无法为 XML 索引分别指定这些信息。 DROP_EXISTING 索引选项可以删除主 XML 索引并创建一个新的主 XML 索引,或者删除辅助 XML 索引并创建一个新的辅助 XML 索引。但是,它不能不删除辅助 XML 索引来创建一个新的主 XML 索引,反之亦然。 主 XML 索引名称与视图名称有相同的限制。  不能为视图中的 xml 类型列创建 XML 索引,不能为 xml 类型列的表值变量或 xml 类型变量创建 XML 索引。 若要使用 ALTER TABLE ALTER COLUMN 选项将 xml 类型列从非类型化的 XML 更改为类型化的 XML,或者从类型化的 XML 更改为非类型化的 XML,则列不应存在 XML 索引。如果确实存在,则在尝试更改列类型之前必须删除该索引。 创建 XML 索引时必须将选项 ARITHABORT 设置为 ON。若要使用 XML 数据类型方法查询、插入、删除或更新 XML 列中的值,则必须在连接上设置相同的选项。如果没有设置,则 XML 数据类型方法将会失败。     创建辅助 XML 索引时请注意下列事项:  除了 IGNORE_DUP_KEY 和 ONLINE 之外,允许对辅助 XML 索引使用所有适用于非聚集索引的索引选项。对于辅助 XML 索引,这两个选项必须始终设置为 OFF。 辅助索引的分区方式类似于主 XML 索引。 DROP_EXISTING 可以删除用户表的辅助索引并为用户表创建其他辅助索引。 您可以查询 sys.xml_indexes 目录视图来检索 XML 索引信息。请注意,sys.xml_indexes 目录视图中的 seconday_type_desc 列中包含辅助索引的类型。 更多信息请参阅“BOOKS ONLINE” 以往帖子: [2005每日一学]DDL触发器(1)  http://community.csdn.net/Expert/topic/4910/4910909.xml?temp=.5234644  

不错,支持!

顶一个

强烈支持LZ,受益非浅啊!

上一篇:有谁知道asp与sql server2005是如何连接的?连接字符串怎么写?? 20CSDN]
下一篇:2005每日一学]排名函数(3) 0CSDN]

相关文章

相关评论