仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 988|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之SQL Server2005的XML数据范例之基本篇

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。1、弁言
现在,在SQLServer2005中,XML成为最高级的数据范例。借助于基于XML形式的强范例化撑持和基于服务器真个XML数据校验功效,如今
,开辟者能够对存储的XML文档举行轻松地远程修正。作为数据库开辟者,很多人都必需大批地触及XML。
现在,在SQLServer2005中,你能以一种新的数据范例的情势把XML存储在数据库中。
现实上,在SQLServer2000中就已包含了一些XML特性。个中,最关头的特性是利用FORXML语句以XML情势前往了局。SQLServer2005
的功效则分明分歧。在SQLServer2005中,XML是一种真实的数据范例;这意味着,你可使用XML作为表和视图中的列,XML能够用于T-SQL语
句中或作为存储历程的参数。如今,你能够间接在数据库中存储、查询和办理XML文件。
更主要的是,如今你还能划定你的XML必需服从的形式。
在SQLServer2005中,除供应机制以校验你的数据库中的XML范例以外,它还同意你形貌要被存储的庞大数据范例而且供应一个引擎来
强迫施加这些划定规矩。
2、利用XML数据范例
实在,XML数据范例与SQLServer中的别的数据范例其实不存在基本的区分。你能够把它用在利用任何一般SQL数据范例的中央。比方,以下
语句创立一个XML变量并用一个XML添补它:
DECLARE@docXML
SELECT@doc=<Teamname="Braves"/>
别的,你还可使用一个查询和SQLServer的FORXML语法来添补一个XML变量:
SELECT@doc=
(SELECT*FROMPerson.ContactFORXMLAUTO)
XML数据范例不但能够作为变量利用,也能够使用于表列中。你还能分派缺省值而且撑持NOTNULL束缚:
以下为援用的内容:
CREATETABLETeam
(
TeamIDintidentitynotnull,
TeamDocXMLDEFAULT<Team/>NOTNULL
)

注重:SQLServer2005的XML功效与SQLServer2000中具有分明的分歧。
把XML数据拔出到表格中只必要用字符串情势的XML指定便可。
以下示例拔出一组纪录:
以下为援用的内容:
INSERTINTOTeam(TeamDoc)
VALUES(
<Teamname="Braves">
<Players>
<Pitchername="JohnSmoltz"
role="Closer"/>
</Players>
</Team>);
INSERTINTOTeam(TeamDoc)
VALUES(
<Teamname="RedSox">
<Players>
<Pitchername="PetroMartinez"
role="Starter"/>
</Players>
</Team>);

当在SQLServer2005中创立XML的实例时,独一的转换是从一个字符串转换成一个XML范例。一样,沿着相反的偏向,你只能够把XML范例
转换成一个字符串范例。在text和ntext范例之间转换是不同意的。
3、XML数据范例的限定
只管在SQLServer2005中XML数据范例就象很多别的数据范例一样看待,可是还存在一些怎样利用它的详细限定。这些限定是:
·XML范例不克不及转换成text或ntext数据范例。
·除string范例,没有别的数据范例可以转换成XML。
·XML列不克不及使用于GROUPBY语句中。
·散布式部分(partitioned)视图不克不及包括XML数据范例。
·sql_variant实例的利用不克不及把XML作为一种子范例。
·XML列不克不及成为主键或外键的一部分。
·XML列不克不及指定为独一的。
·COLLATE子句不克不及被利用在XML列上。
·XML列不克不及到场到划定规矩中。
·独一可使用于XML列的内置标量函数是ISNULL和COALESCE。没有任何别的内置标量函数撑持利用XML范例。
·表中最多只能具有32个XML列。
·具有XML列的表不克不及有一个凌驾15列的主键。
·具有XML列的表不克不及有一个timestamp数据范例作为它们的主键的一部分。
·存储在数据库中的XML仅撑持128级的条理。
4、XML范例办法
到此为止,下面的示例已展现了XML数据范例仅能用作一种blob范例数据,可是这恰是XML数据范例显现其本身力气的中央。XML数据范例
撑持利用UDT点(myXML.operation())语法举行挪用的多少办法。下表1中枚举出所撑持的办法。
表格1:XML数据范例办法。
办法名形貌
query实行一个XML查询而且前往查询的了局
exists实行一个XML查询,而且假如有了局的话前往值1
value盘算一个查询以从XML中前往一个复杂的值
modify在XML文档的得当地位实行一个修正操纵
nodes同意你把XML分化到一个表布局中
鄙人面几节中,你要利用一个表Team,它的每个行中包括一个小组的名字。在每行中,有一个包括有关于该小组的XML数据的TeamDoc
行:
以下为援用的内容:
CREATETABLETeam
(
TeamIDintidentitynotnull,
TeamDocXMLDEFAULT<Team/>NOTNULL
)
在这些例子中,我们假定上面的XML文档存在于表中的Braves行中:
<Teamname="Braves">
<Players>
<Pitchername="JohnSmoltz"role="Closer"/>
<Pitchername="RussOrtiz"role="Starter"/>
<ThirdBasename="ChipperJones"
role="Starter"bats="switch"/>
</Players>
</Team>

query办法
注重:你能够在表和视图列、T-SQL语句或存储历程的参数中利用XML。
这个办法同意你指定一个要盘算的Xquery或XPath表达式,该办法的了局是一个XML数据范例工具。它的详细语法情势以下:
query(XQuery)
第一个参数老是一个Xquery表达式。上面的例子利用一个查询来前往一个XML文档-个中包括有关每个小组的投球手的信息:
SELECTTeamDoc.query(/Team/Players/Pitcher)
FROMTeam
这个语句发生以下了局:
以下为援用的内容:
----------------------------------------------
<Pitchername="JohnSmoltz"role="Closer"/>
<Pitchername="RussOrtiz"role="Starter"/>
(1row(s)affected)
这个query办法同意你查询和前往与你指定的表达式相婚配的结点列表。该办法的真正能力来自于XQuery语法,我们将在本文前面再具体讨
论。
exist办法
这个exist办法用于决意是不是一个查询可以发生任何了局。这个exist办法的语法情势以下:
exist(XQuery)
当你利用这个exist办法时,它盘算这个XQuery查询,而且假如该查询发生任何了局的话前往值1。比方,上面语句查询小组表行中是不是
TeamDoc域中存有Starter投手:
上面是复杂的Exist语句:
以下为援用的内容:
SELECTCount(*)
FROMTeam
WHERETeamDoc.exist(
/Team/Players/Pitcher[@role="Starter"])=1
<p><strong>
共2页:上一页1[2]下一页

两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
小妖女 该用户已被删除
沙发
发表于 2015-1-19 06:51:38 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-27 16:04:52 来自手机 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
莫相离 该用户已被删除
地板
发表于 2015-2-5 11:49:32 | 只看该作者
入门没那么困难,精通没那么容易
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-11 16:12:29 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
飘灵儿 该用户已被删除
6#
发表于 2015-3-2 15:47:47 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
分手快乐 该用户已被删除
7#
发表于 2015-3-11 04:35:19 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
再现理想 该用户已被删除
8#
发表于 2015-3-17 21:08:14 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
乐观 该用户已被删除
9#
发表于 2015-3-25 02:38:17 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 18:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表