浅探SQL Server 2005对XML的支持

SQL Server 2005简装版数据库实战入门 SQL Server 2005是微软数据库发展史上的重要版本,首次引入了.NET CLR集成、增强的T-SQL功能以及更为健壮的系统架构设计。其核心架构由关系引擎(Relational Engine)存储引擎(Storage Engine)和查询优化器(Query Optimizer)三大组件构成,协同完成查询解析、执行计划生成与数据存储管理。关系引擎负责接收T-SQL语句并进行语法解析,查询优化器则基于统计信息生成最优执行路径,存储引擎则负责数据页的物理读写与事务日志管理。 阅读详情

1.    引言

可扩展标记语言 (XML) 作为一种与平台无关的数据表示形式已被广泛采用。它对于在松散耦合且完全不同的系统,以及各种企业到企业 (B2B) 应用和工作流范畴内交换信息是很有用的。数据交换已成为 XML 技术的主要驱动力之一。

经过长时间的发展和改进,关系数据库在数据安全性、并发性控制、数据共享、数据传输、数据备份和恢复方面已经相当的成熟,关系数据库将为XML数据存储的数据管理、查询和修改处理等方面提供强有力支持;同时,我们可以利用关系数据库的索引功能为XML数据建立索引,从而优化XML数据的查询。

XML数据可以方便地与现有的关系数据和SQL应用程序互操作,这样我们可以在不破坏原有应用程序的前提下进行数据建模,为系统引入XML;数据库的服务器还为XML数据提供了备份、恢复和复制等管理功能。

2.    以XML的方式获取信息

对XML的支持的首要一点就是允许用户直接从数据库中取出,并以XML的方式显示出来。为此,需要为SELETE语句配置一个FOR XML子句,其语法如下:

[ FOR { XML { RAW | AUTO | EXPLICIT }

[ , XMLDATA ]

[ , ELEMENTS ]

[ , BINARY BASE64 ] } ]

 

 

 

 

 

 

 

 

 

 

 

 


FOR XML子句的XML有三种模式:RAW、AUTO或者EXPLICIT,选择的模式决定了结果XML文件的形式和组成。

RAW 模式将查询结果的每一行以一个带有类属标识符 row 的 XML 元素显示出来,SELECT语句中的列作为元素属性。

AUTO模式是默认模式,此时返回的查询结果以简单的XML树显示。结果集中元素的嵌套或者层次由 SELECT 语句中指定列所标识的表顺序决定。最左边的表将成为最顶层元素,次左边的表(由 SELECT 语句中的列标识)将嵌套在顶层元素内,依次类推。

在EXPLICIT 模式下,查询编程人员可以显式地定义结果 XML 树的形状。使用该模式要求以特殊方式书写查询,有关所需嵌套的附加信息也作为查询的一部分显式指定。

FOR XML还有另外三个可选项:XMLDATA、BINARY base64、ELEMENTS。

XMLDATA:指定该选项时,XML文档架构将包含在XML文档中显示出来。

ELEMENTS:如果指定了该选项,列将以子元素形式返回,否则,列将被映射为 XML 属性。该选项只支持在 AUTO 模式下使用。

BINARY base64:在查询中指定该选项可以返回 base64 编码格式的二进制数据。在 RAW 和 EXPLICIT 模式下,不指定该选项检索二进制数据的结果是产生错误。

可以使用在URL处的执行SQL 语句、XML模板进行查询、HTML事件集成等方式完成上述查询。下面举几个简单的例子。


ROW模式:

AUTO模式:


指定ELEMENTS项:

3.    XML数据的存储

在SQL Server 2005用户可以用普通的CREATE TABLE语句创建带有XML列的表,然后就可以通过多种方式存储XML数据。

非类型化的XML数据类型

当XML数据的架构为未知;或架构为已知,但映射到关系数据模型非常复杂并且难于维护等情况,可以使用非类型化的XML数据类型。非类型化的XML允许存储XML内容片段。例:

CREATE TABLE student (number INT PRIMARY KEY, xCol XML not null)

 

 

 


类型化的XML数据类型

当XML数据的架构为已知时可以使用类型化的XML数据类型。使用类型化的XML有利于对数据的有效性验证以及存储和查询的优化处理。对于类型化的XML,使用 DOCUMENT(不允许片段)或 CONTENT(允许片段)规范指定是否允许存储内容片段,同时必须提供XML的架构集合。例:

CREATE TABLE student(

number INT PRIMARY KEY,

doc XML(CONTENT con))

 

 

 

 

 

 

 

 

 


使用约束

可以在类型化和非类型化的 XML 数据类型的列中使用关系约束,除主键和外键约束外大部分SQL 约束同样可应用于 XML 列。

XML数据的存储

1.      直接把数据插入到XML列中,在插入过程中会进行格式良好性检查,同时对于类型化的XML,必须声明XML架构的命名空间。

2.      将来自文件的数据插入非类型化的 XML 列。

3.      存储有 TYPE 指令的 FOR XML 生成的 XML 数据。

4.    XML数据的查询和修改

Xquery语言

Xquery语言是一种巧妙地使用 XML 结构的查询语言,可以跨各种数据表示查询,而不管这些数据是物理存储在 XML 中,还是通过中间件被视为 XML。

XQuery 语言之于 XML 正如 SQL 语言之于关系数据库。它是使得查询简洁易懂,而又相当灵活,可以查询大范围的 XML 信息源,其中包括数据库和文档。

XML数据类型的五种操作方法

XML数据类型提供了四个检索XML值或实例的方法:query()、value()、exist() 和 nodes(),以及修改XML数据的modify() 方法。

query() 方法用于提取 XML 实例的部分。XQuery 表达式求值为一个 XML 节点列表。以这些节点中的每一个为根的子树按照文档顺序返回。结果类型为非类型化的XML。

SELECT number, doc.query('/doc[@id = 503]//section')  
FROM   student

 

 

 

 

 

 


value() 方法从 XML 实例提取标量值。它返回 XQuery 表达式所求值的节点的值。该值被转换为 value() 方法的第二个参数所指定的 T-SQL 类型。例:

SELECT doc.value( 'data((/doc//section[@num = 3]/heading)[1])', 'nvarchar(max)')

FROM student

 

 

 

 

 

 


exist() 方法用于对 XML 实例进行存在性检查。如果 XQuery 表达式求值为非空节点列表,则返回 1;否则,返回 0。

nodes() 方法产生特定 XML 数据类型的实例,每个实例都将其上下文设置为 XQuery 表达式所求值的不同节点。特定的 XML 数据类型支持 query()、value()、 nodes() 和 exist() 方法,并且可以用于 count(*) 聚合和 NULL 检查。所有其他的使用都会产生错误。

modify() 方法允许修改 XML 实例的某些部分,例如添加或删除子树,或者更新标量值。例:

UPDATE student SET doc.modify('

replace value of (/doc[@number="1458"]/last-name)[1] with "wang"')

 

 

 

 

 

 


5.    创建XML索引

XML 数据是以内部二进制形式存储的,其存储容量可达到2GB。对于XML数据的查询在运行时可能需要一次或多次地解析表中每一行的XML BLOB,这会使查询处理的速度变得很慢。如果在工作负荷中常常需要进行查询,可以为XML列建立索引,提高查询的处理速度。

在SQL Server 2005中,XML索引包括主XML索引、次XML索引和内容索引。

主XML索引

主XML索引可以通过CREATE PRIMARY XML INDEX语句创建,它在 XML 节点的信息集项的一个子集中创建一个B+树。B+树的列表示标记,例如元素和属性名称、节点值和节点类型。其他的列捕获XML数据中的文档顺序和结构,以及从XML实例的根节点到每个节点的路径,从而有效地对路径表达式进行求值。基表的主键在主XML索引中复制,以使索引行与基表行相关。例:

CREATE PRIMARY XML INDEX index_doc on student (doc)

 

 

 


需要 XML 数据类型方法的查询使用主 XML 索引,从索引本身返回标量值或 XML 子树。如:从 XML 列检索的(SELECT * FROM student 或 SELECT doc FROM student)。

次XML索引

在主XML索引的基础上,可以创建次索引来加速不同类型的查询处理。SQL Server 2005提供了三种次XML索引分别为不同类型的查询服务:

PATH索引加速基于路径的查询,PATH索引在主XML索引的列(path, value)中构建 B+ 树。利用PATH索引提高查询速度的常见例子为:SELECT语句的WHERE子句中对XML列使用exist()方法。例:

CREATE XML INDEX index_doc_Path on student (doc)
   USING XML INDEX index_doc FOR PATH

 

 

 

 

 

 


PROPERTY索引有利自定义属性管理方案,索引在主 XML 索引的列 (PK, path, value) 中创建 B+ 树。PROPERTY索引对 XML 实例中的属性值查找有利。例:

CREATE XML INDEX index_doc_Property on student (doc)
   USING XML INDEX index_doc FOR PROPERTY

 

 

 

 

 

 

 

 

 


VALUE索引加速基于值的查询,VALUE索引对节点的值已知,但是其路径没有准确指定的查询有利。例:

CREATE XML INDEX index_doc_Value on docs (doc)
   USING XML INDEX index_doc FOR VALUE

 

 

 

 

 

 


内容索引

可以为XML列创建全文本索引,此时XML标记会因为全文本索引的建立而被忽略。查询时可以把全文本索引和XML索引组合起来使用,首先利用全文本索引作为筛选器来缩小查询范围,再利用XML索引进行查询。

6.    结论

本文从以XML方式获取信息、XML数据的存储、XML数据的查询和修改以及XML索引的创建等方面对SQL Server 2005对XML的支持进行了简要的讨论。我们看到SQL Server 2005已经为XML数据提供了强有力的支持,在业已发展成熟的关系数据库这个温床上,XML技术将在未来发挥更大的影响。

VS2005和SQL Server 2005简体中文版的开发与数据库管理宝典 Team Foundation Server(TFS)作为微软提供的一套全面的团队基础项目管理工具,集成了版本控制、工作项跟踪、构建自动化以及项目管理功能。TFS的设计初衷是为软件开发团队提供一个协作的环境,让团队成员能够更加紧密地配合,提高工作效率,同时保证项目的按时交付。TFS的核心功能组件包括:版本控制:提供了集中式的源代码管理解决方案,支持文件级别的版本控制以及分支管理。工作项跟踪:允许团队跟踪任务、需求、缺陷等,有助于项目管理和进度监控。报告和仪表板。 阅读详情

相关推荐

.NET环境下的SQL Server 2005 使用技巧与示例

SQL Server 2005是微软公司推出的一款功能强大的关系型数据库管理系统。它为IT专业人员提供了一个集成的数据管理解决方案,支持企业级的数据存储、处理和分析。SQL Server 2005不仅增强了数据仓库和商业智能功能,还提高了开发人员的工作效率,允许他们使用.NET Framework创建数据库相关应用。ADO.NET是.NET Framework中用于数据访问的一组类库,它提供了一种与数据源进行交互的编程模式。ADO.NET核心组件包括以下几个方面:Connection对象。

weixin_42402664的博客 1109

SqlServer查询xml字段总结

1、先来一波查询 SELECT xt.CBRID, x.m.value (’@number’, ‘varchar(10)’) Snumbe...

weixin_30384217的博客 1422

声纹识别实战:用Python从零搭建一个简易声纹验证系统(附完整代码)

本文是一份详细的声纹识别实战指南,教你使用Python从零搭建一个简易的声纹验证系统。文章涵盖了从音频采集、预处理、MFCC特征提取,到基于高斯混合模型(GMM)的建模与验证全流程,并提供了完整的代码实现,帮助开发者快速掌握这项生物特征识别核心技术。

ik6789012的博客 230

SqlServer解析XML,解析JSON数据格式

一:解析XML(SQL2005版本开始支持) declare @pro_xml varchar(max)= '<reg> <node> <pro_id>3</pro_id> <pro_sale_num>10</pro_sale_num> <server_amount>

脑壳疼 9677

Python中的串口通信库pyserial(基础)

pyserial是一个跨平台的库,可以在多个操作系统上使用,包括Windows、Linux和MacOS。:flushInput方法用于清除输入缓冲区中的所有数据,flushOutput方法用于清除输出缓冲区中的所有待发送数据。:PySerial允许在创建Serial对象后,通过修改对象的属性来设置串口参数,如波特率、数据位、校验位和停止位。同时,也提供了方法或属性来检查串口的状态,如是否已打开。:sendBreak方法用于向串口发送一个BREAK信号,这可以用于向连接的设备发送一个中断或重置信号。

weixin_44217158的博客 1万+

电子纸价签实战:基于SSD1680的墨水屏驱动开发与优化

本文详细介绍了基于SSD1680驱动芯片的电子纸价签开发实战,涵盖硬件连接、驱动框架搭建、核心流程解析及性能优化。重点剖析了初始化配置、波形文件加载、图像数据写入与刷新触发等关键步骤,并提供了功耗优化、显示效果提升及代码健壮性等实用避坑指南,帮助开发者高效实现稳定低功耗的墨水屏驱动。

weixin_28278377的博客 227

SQL Server 2005中XML数据类型的的相关知识总结

摘要 这篇文章深入探讨了有关提升Microsoft® SQL Server™ 2005中XML数据类型的查询和修改操作性能的诸多问题。为了更好的理解本文,您最好事先熟悉SQL Server 2005中有关XML的相关特性。作为背景材料,您可以查阅MSDN当中的“Microsoft SQL Server 2005中对XML的支持”和“Microsoft SQL Server 2005的XML最

开心 2941

STM32CubeMX平台F4系列固件下载核心要点

详解STM32CubeMX平台下F4系列单片机的固件包下载方法与常见问题,重点讲解stm32cubemx固件包下载流程及配置技巧,帮助开发者快速完成开发环境搭建。

weixin_42575505的博客 891

SqlServer XML文件解析

--放在元素 DECLARE @xml XML='<Data> <Lot><LotNM>1</LotNM><Qty>4</Qty></Lot> <Lot><LotNM>2</LotNM><Qty>5</Qty></Lot> <Lot><LotNM>3</LotNM><Qty>6</Qty>&lt

ruo40018293的博客 1004

Origin 2025b中文版安装全指南:避开乱码、水印与崩溃陷阱

Origin作为科研绘图领域的事实标准,其2025b版本首次官方支持简体中文UI,但安装远非‘下一步’即可完成。核心在于理解软件本体、语言包、许可证服务与系统区域设置四者间的耦合关系——尤其Windows非Unicode程序语言必须设为‘中文(简体,中国)’,否则必然触发坐标轴乱码、PDF文字方块等典型故障;而AI辅助拟合、内置Python 3.11等新特性,又依赖正确的字体链(如SimSun)与注册表强制加载(UILanguage=zh-CN)才能稳定启用。该版本广泛应用于材料科学、电化学、XRD/SEM

weixin_42548874的博客 1399

WorkBuddy结合DeepSeek与Skill:文献检索自动化与Token成本控制实战

Agent工具与大模型API的结合正重塑知识工作者的日常流程。在实际工程中,调用大模型处理批量任务常面临Token消耗过快、成本不可控的痛点,而国产大模型DeepSeek以极低的API定价和兼容OpenAI接口的特性,为规模化文本处理提供了“Token自由”的可能。同时,可复用的Skill机制能够将特定领域的工作流固化为标准化步骤,让Agent自动执行检索式生成、文献筛选与摘要归纳等复杂操作。本文从这一技术背景出发,以科研文献检索为应用场景,演示如何利用WorkBuddy、DeepSeek API与自建文献

weixin_29061509的博客 485

SQL SERVER 解析XML字符串

SQL SQLSERVER MSSQL 解析 XML

2642

Java SSH框架学习

Java SSH框架学习

私信可回答各种问题~ 1789

SQL Server 2005对XML的支持

SQL Server 2000对XML的支持    SQL Server 2000就已经有了对XML的支持,这种支持主要体现在FOR XML子句和SQLXML上。然而,这些支持并不充分,因为在SQL Server 2000里,归根结底是用关系型的数据表来模拟XML数据,由于关系型数据先天上的缺点,让它模拟表现力和扩展性更强的XML数据必然模拟得不伦不类,要实现具有一定格式的XML代码,往往需要写很

Witwind的专栏 1600

RK3568平台(USB篇)USB Gadget 驱动

USB 设备驱动,按照设备端关联的 USB 控制器 是工作在 主模式 还是 从模式,分为 USB 设备主机侧驱动 (主模式),或者 USB 设备从机侧驱动 (从模式)。同时,工作在 主模式 的 USB 控制器,称为 USB 主机控制器 (UHC: USB Host Controller),工作在 从模式 的 USB 控制器,称为 USB 设备控制器 (UDC: USB Device Controller)。有的 USB 控制器,只能工作在 主模式 或 从模式 中的某一种;

weixin_49303682的博客 1438

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SQL Server2005的XML数据类型之基础篇

一、 引言  如今,在SQL Server 2005中,XML成为第一流的数据类型。借助于基于XML模式的强类型化支持和基于服务器端的XML数据校验功能,现在,开发者可以对存储的XML文档进行轻松地远程修改。  作为数据库开发者,许多人都必须大量地涉及XML。  如今,在SQL Server 2005中,你能以一种新的数据类型的形式把XML存储在数据库中。  事实上,在SQL Server 200

瞎掰大数据-- 世界的本质是数据,胡侃瞎掰,专注微软大数据解决方案 1232

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SQL SERVER 2005 Express 使用心得

SQL SERVER 2005 Express 使用心得SQL SERVER 2005 Express 是SQL SERVER 2005经过简化的版本,因此它当然会有一些限制,如最大的并发用户数小于等于12个,只能支持一个CPU,最大的内存量是1G等.SQL SERVER 2005 Express的安装过程如下:1. 下载Microsoft .NET Framework 2.0并安装2. 下载 M

4495

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SQL Server 2005中的XML的最佳实践

介绍Microsoft SQL Server 2005 对XML数据处理提供了广泛的支持。XML值可以以原生的形式存储在具有XML数据类型的列中,它们可以是有类型的XML(typed XML),或者是无类型的XML(untyped XML)。你可以对XML列添加索引。此外,还可以使用XQuery和XML DML来精细地操作数据,后者已成为数据修改功能的扩展。 Microsoft SQL Serve

体验SQL Server 2005 2864

Microsoft SQL Server 2005 中的 XML 支持(1)

一、简介 可扩展标记语言 (XML) 作为一种与平台无关的数据表示形式已被广泛采用。它对于在松散耦合且完全不同的系统,以及各种企业到企业 (B2B) 应用和工作流范畴内交换信息是很有用的。数据交换已成为 XML 技术的主要驱动力之一。.XML 在企业应用程序中的使用正日益广泛,它主要用于对半结构化和非结构化数据进行建模。文档管理就是这样的一种应用程序。像电子邮件这样的文档是半结构化性质的。

417

SQL Server 2005 xml字段修改

当XML中某个节点值符合条件时, 更新XML字段中的任意一个节点的值 CREATE TABLE XmlTable ( intcolumn int null, xmlcolumn xml null ) GO insert XmlTable values (1, ' 01 original_1_1 02 original_1_2

windwolfer的专栏 1464

使用SQL Server 2005 FOR XML嵌套查询

相比SQL Server 2000提供的FOR XML查询,SQL Server 2005版本对现有功能增强的基础上增加了不少新功能,最为吸引人的功能包括对Xml数据类型支持、使用PATH模式以及嵌套FOR XML查询支持等,这意味着通过新的FOR XML查询功能可以构造出结构更加灵活的Xml数据。

7002

SQL Server 2000 -SQL Server 2005升级手记

先说一下这次升级,我最大的体会:我觉得一个企业没有办法用一个系统,特别是当一个企业越做越大的时候,所以一个企业不可避免地就会有各种各样的系统,这些系统可以从业务上分为各种不同的系统,同时也可以在技术上分为数据层,中间层,展现层等,但是无论如何,系统间从架构上说一定要做到松耦合,这是架构师必须考虑的问题,否则后续麻烦很多。比如SQL Server 2005, 我之前一直是比较推崇的,微软随数据库服务

Think back, Move forward 2998

SQL Server 对XML数据功能支持

SQL Server 对XML数据功能支持

kaixinxinba1982的博客 3422

SQL Server2005的XML数据类型之基础篇1

一、引言如今,在SQL Server 2005中,XML成为第一流的数据类型。借助于基于XML模式的强类型化支持和基于服务器端的XML数据校验功能,现在,开发者可以对存储的XML文档进行轻松地远程修改。作为数据库开发者,许多人都必须大量地涉及XML。如今,在SQL Server 2005中,你能以一种新的数据类型的形式把XML存储在数据库中。事实上,在SQL Server 2000

ちえをだそう―さざなみ 467

sql server2005 实现 webservice

用SQL Server 2005实现WebService[收藏此页] [打印]作者:佚名  2007-09-11 内容导航:用SQL Server 2005实现WebServ... 第1页: 用SQL Server 2005实现WebService init_Nav();【IT168 技术文档】    在 SQL Server 中,MS向数据库引

香柏傲雪的知识栏目 962

sql server T-Sql操作Xml数据

一、前言 SQLServer 2005 引入了一种称为 XML 的本机数据类型。用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列;此外,还允许带有变量和参数。为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB)。 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,

不积跬步无以至千里,不积小流无以成江海 1662
上一篇: 使用sql脚本把数据导出为.txt文件
下一篇: VC++的链接错误LNK2005
Samlinsky
博客等级 码龄21年 0粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值