当前位置: 首页 > news >正文

广州网站制作公司郑州做网站最好的公司

广州网站制作公司,郑州做网站最好的公司,wordpress做微信登录页面模板,如何用dw做网站底页关系数据模型与SQL SQL for XML 模式名功能RAW返回的行作为元素,列值作为元素的属性AUTO返回表名对应节点名称的元素,每列的属性作为元素的属性输出输出,可形成简单嵌套结构EXPLICIT通过SELECT语法定义输出XML结构PATH列名或列别名作为XPAT…

关系数据模型与SQL

SQL for XML

模式名功能
RAW返回的行作为元素,列值作为元素的属性
AUTO返回表名对应节点名称的元素,每列的属性作为元素的属性输出输出,可形成简单嵌套结构
EXPLICIT通过SELECT语法定义输出XML结构
PATH列名或列别名作为XPATH表达式来处理

SQL Server中的FOR XML子句允许开发者将查询结果转换成XML格式。这一特性非常实用,特别是在需要将关系型数据以XML格式交换或存储时。FOR XML子句支持四种模式:AUTORAWEXPLICITPATH。每种模式都有其特点和适用场景。下面我们将详细介绍这四种模式的基本语法和用法,结合例子进行说明。
我们先设计一个简单的关系表,并基于这个表创建四种 SQL for XML 模式的语句示例: RAW, AUTO, EXPLICIT, 和 PATH

示例关系表:Employees

EmployeeIDNamePositionDepartment
1AliceEngineerIT
2BobManagerHR
3CharlieAnalystFinance

以下是 SQL for XML 的四种模式的例子:

1. RAW 模式

直接将每一行封装为一个 <row> 元素:

SELECT EmployeeID, Name, Position, Department
FROM Employees
FOR XML RAW;

输出示例

<row EmployeeID="1" Name="Alice" Position="Engineer" Department="IT" />
<row EmployeeID="2" Name="Bob" Position="Manager" Department="HR" />
<row EmployeeID="3" Name="Charlie" Position="Analyst" Department="Finance" />

2. AUTO 模式

根据查询中指定的列和表的关系,自动生成嵌套结构:

SELECT EmployeeID, Name, Position, Department
FROM Employees
FOR XML AUTO;

输出示例

<Employees EmployeeID="1" Name="Alice" Position="Engineer" Department="IT" />
<Employees EmployeeID="2" Name="Bob" Position="Manager" Department="HR" />
<Employees EmployeeID="3" Name="Charlie" Position="Analyst" Department="Finance" />

如果包含表的层级关系,例如部门和员工:

SELECT Department, EmployeeID, Name
FROM Employees
FOR XML AUTO, ELEMENTS;

输出示例(嵌套结构):

<Employees><Department>IT</Department><EmployeeID>1</EmployeeID><Name>Alice</Name>
</Employees>
<Employees><Department>HR</Department><EmployeeID>2</EmployeeID><Name>Bob</Name>
</Employees>

3. EXPLICIT 模式

需要通过特定的列结构明确指定 XML 层级。规则:元数据列是SELECT查询必须先生成的满足规定要求的前两列,是Tag列和Parent列,作用是为结果提供层次信息:

  • 第1列,列名固定为Tag,值是一个对应当前元素的标记号(整数类型)。 查询必须为从行集构造的每个元素提供标记号。
  • 第2列,列名固定为Parent,值是父元素的标记号。Parent 列值为0或NULL表明相应的元素没有父级,该元素将作为顶级元素添加到 XML。

其他数据列名的指定方式ElementName!TagNumber!AttributeName!Directive,其中Directive 是可选的,提供有关 XML 构造的其他信息
注意:这种模式要求一个复杂的 UNION ALL 查询来构建 XML 的层级。

示例
SELECT 1 AS Tag,NULL AS Parent,EmployeeID AS [Employees!1!EmployeeID],Name AS [Employees!1!Name],NULL AS [Department!2!Department]
FROM Employees
UNION ALL
SELECT 2 AS Tag,1 AS Parent,NULL AS [Employees!1!EmployeeID],NULL AS [Employees!1!Name],Department AS [Department!2!Department]
FROM Employees
ORDER BY [Employees!1!EmployeeID]
FOR XML EXPLICIT;

输出示例

<Employees EmployeeID="1" Name="Alice"><Department>IT</Department>
</Employees>
<Employees EmployeeID="2" Name="Bob"><Department>HR</Department>
</Employees>
<Employees EmployeeID="3" Name="Charlie"><Department>Finance</Department>
</Employees>

4. PATH 模式

允许自定义 XML 的元素和属性的路径,并且可以更灵活地指定输出。

示例 1:直接生成简单路径
SELECT EmployeeID AS "Employee/@ID",Name AS "Employee/Name",Position AS "Employee/Position"
FROM Employees
FOR XML PATH;

输出示例

<Employee ID="1"><Name>Alice</Name><Position>Engineer</Position>
</Employee>
<Employee ID="2"><Name>Bob</Name><Position>Manager</Position>
</Employee>
<Employee ID="3"><Name>Charlie</Name><Position>Analyst</Position>
</Employee>
示例 2:PATH()传入层级关系
SELECT ProductModelID,Name
FROM Production.ProductModel
WHERE ProductModelID=122 or ProductModelID=119
FOR XML PATH ('ProductModel');

输出示例

<ProductModel><ProductModelID>122</ProductModelID><Name>All-Purpose Bike Stand</Name>
</ProductModel>
<ProductModel><ProductModelID>119</ProductModelID><Name>Bike Wash</Name>
</ProductModel>
SELECT ProductModelID,Name
FROM Production.ProductModel
WHERE ProductModelID=122 OR ProductModelID=119
FOR XML PATH ('');

输出示例

<ProductModelID>122</ProductModelID>
<Name>All-Purpose Bike Stand</Name>
<ProductModelID>119</ProductModelID>
<Name>Bike Wash</Name>
示例 3:嵌套路径
SELECT Department AS "Department",(SELECT EmployeeID AS "ID", Name AS "Name"FROM Employees E2WHERE E1.Department = E2.DepartmentFOR XML PATH('Employee'), TYPE) AS "Employees"
FROM Employees E1
GROUP BY Department
FOR XML PATH('Department');

输出示例

<Department><Department>IT</Department><Employees><Employee><ID>1</ID><Name>Alice</Name></Employee></Employees>
</Department>
<Department><Department>HR</Department><Employees><Employee><ID>2</ID><Name>Bob</Name></Employee></Employees>
</Department>

让我们通过一个具体的例子来说明 RAWAUTO 模式的区别,尤其是 AUTO 模式如何形成层次关系

假设有两张表:DepartmentsEmployees

Departments
DepartmentIDDepartmentName
1IT
2HR
Employees
EmployeeIDNamePositionDepartmentID
1AliceEngineer1
2BobManager2
3EveAnalyst1

1. 使用 RAW 模式

RAW 模式会将每一行数据封装为 <row>,不形成嵌套关系:

SQL 查询
SELECT D.DepartmentName, E.EmployeeID, E.Name, E.Position
FROM Departments D
JOIN Employees E ON D.DepartmentID = E.DepartmentID
FOR XML RAW;
输出 XML
<row DepartmentName="IT" EmployeeID="1" Name="Alice" Position="Engineer" />
<row DepartmentName="HR" EmployeeID="2" Name="Bob" Position="Manager" />
<row DepartmentName="IT" EmployeeID="3" Name="Eve" Position="Analyst" />
  • 每一行数据以 <row> 包裹。
  • 没有层次结构DepartmentsEmployees 的信息在同一级别。

2. 使用 AUTO 模式

AUTO 模式根据表之间的关系自动生成层次结构,从左到右的表按嵌套顺序排列:

SQL 查询
SELECT D.DepartmentName, E.EmployeeID, E.Name, E.Position
FROM Departments D
JOIN Employees E ON D.DepartmentID = E.DepartmentID
FOR XML AUTO;
输出 XML
<Departments DepartmentName="IT"><Employees EmployeeID="1" Name="Alice" Position="Engineer" /><Employees EmployeeID="3" Name="Eve" Position="Analyst" />
</Departments>
<Departments DepartmentName="HR"><Employees EmployeeID="2" Name="Bob" Position="Manager" />
</Departments>
  • 层次结构Departments 成为父节点,Employees 成为子节点。
  • 嵌套关系由表的连接顺序(从左到右)决定:Departments → Employees

总结 RAW 与 AUTO 的区别

特性RAW 模式AUTO 模式
输出结构每行数据一个 <row> 元素自动根据表关系生成层次结构
节点名称固定为 <row>节点名称根据表名自动生成
多表嵌套支持不支持,所有数据在同一层级支持,通过表连接顺序生成嵌套
使用场景简单的平面数据输出需要自动生成父子关系、层次结构的场景

文章转载自:
http://dinncoadjective.stkw.cn
http://dinncooveremphasized.stkw.cn
http://dinncowardress.stkw.cn
http://dinncoretrovirus.stkw.cn
http://dinncogerontogeous.stkw.cn
http://dinncobutanone.stkw.cn
http://dinncoantiknock.stkw.cn
http://dinncoshears.stkw.cn
http://dinncoextradition.stkw.cn
http://dinncoreplicar.stkw.cn
http://dinncoaunt.stkw.cn
http://dinncopietistic.stkw.cn
http://dinncotabourine.stkw.cn
http://dinncohaematal.stkw.cn
http://dinncobraize.stkw.cn
http://dinncoshadbush.stkw.cn
http://dinncothereto.stkw.cn
http://dinncoshirtfront.stkw.cn
http://dinncocapriciously.stkw.cn
http://dinncolargeish.stkw.cn
http://dinncocountersunk.stkw.cn
http://dinncooverstrain.stkw.cn
http://dinncobankrupt.stkw.cn
http://dinncoflown.stkw.cn
http://dinncoreplicability.stkw.cn
http://dinncoecclesiastic.stkw.cn
http://dinncofatherly.stkw.cn
http://dinncoephesine.stkw.cn
http://dinncograpestone.stkw.cn
http://dinncoindefeasible.stkw.cn
http://dinncohunter.stkw.cn
http://dinncoagonizing.stkw.cn
http://dinncomediatrix.stkw.cn
http://dinncoguppy.stkw.cn
http://dinncoshoemaker.stkw.cn
http://dinncohandwrought.stkw.cn
http://dinncoplenishing.stkw.cn
http://dinncoindecipherable.stkw.cn
http://dinncoadios.stkw.cn
http://dinncoexcuse.stkw.cn
http://dinncosabreur.stkw.cn
http://dinncoequestrienne.stkw.cn
http://dinncotraversing.stkw.cn
http://dinncojingoistic.stkw.cn
http://dinncogrieve.stkw.cn
http://dinncoexsanguinate.stkw.cn
http://dinncominiaturise.stkw.cn
http://dinncoapotropaism.stkw.cn
http://dinncohovel.stkw.cn
http://dinncoforecastle.stkw.cn
http://dinncophytosociology.stkw.cn
http://dinncoyahve.stkw.cn
http://dinncorimation.stkw.cn
http://dinncoworkmanlike.stkw.cn
http://dinncotoner.stkw.cn
http://dinncogarget.stkw.cn
http://dinncounintentional.stkw.cn
http://dinncobleeper.stkw.cn
http://dinncohorsefeathers.stkw.cn
http://dinncoeggheaded.stkw.cn
http://dinncosubshrub.stkw.cn
http://dinncoyardarm.stkw.cn
http://dinncoshenyang.stkw.cn
http://dinncoretiracy.stkw.cn
http://dinncodegressive.stkw.cn
http://dinncocup.stkw.cn
http://dinncoincorruptness.stkw.cn
http://dinncochiseled.stkw.cn
http://dinncononbelligerent.stkw.cn
http://dinncocrumena.stkw.cn
http://dinncochd.stkw.cn
http://dinncopatriate.stkw.cn
http://dinncobandwagon.stkw.cn
http://dinncoupholstery.stkw.cn
http://dinncomailing.stkw.cn
http://dinncoazoimide.stkw.cn
http://dinncocoercionary.stkw.cn
http://dinncotintinnabulary.stkw.cn
http://dinncowarszawa.stkw.cn
http://dinncospadicose.stkw.cn
http://dinncocytoarchitecture.stkw.cn
http://dinncoslung.stkw.cn
http://dinncoinstanter.stkw.cn
http://dinncocherubic.stkw.cn
http://dinncoius.stkw.cn
http://dinncodeliverance.stkw.cn
http://dinncostylet.stkw.cn
http://dinncodomain.stkw.cn
http://dinncocopremic.stkw.cn
http://dinncoepaulette.stkw.cn
http://dinncomicroparasite.stkw.cn
http://dinncolimbate.stkw.cn
http://dinncotertiary.stkw.cn
http://dinncoharem.stkw.cn
http://dinncophenomenon.stkw.cn
http://dinncospelean.stkw.cn
http://dinncosponsion.stkw.cn
http://dinncoreassemble.stkw.cn
http://dinncooctagonal.stkw.cn
http://dinncodoubledome.stkw.cn
http://www.dinnco.com/news/157148.html

相关文章:

  • 做图的ppt模板下载网站网站seo系统
  • 做嫒嫒网站品牌营销策划方案
  • 北京市建设工程造价管理处网站百度快照投诉
  • 做流量网站有收入吗百度公司的发展历程
  • 武汉网站优化怎么做nba最新消息交易
  • 网站建设怎么做更好推广网站的方法
  • 找做网站公司需要注意什么条件互联网论坛
  • 一级a做爰片不卡的网站nba最新消息新闻
  • 网站改版 影响水平优化
  • 个人账号如何注册网站建站平台在线提交功能
  • 东莞寮步网网站seo的方法
  • 腾和企业网站管理系统软文营销的技巧有哪些?
  • 58同城深圳招聘网站腾讯广告代理
  • 自己免费做网站(三)哪些平台可以做推广
  • 买个个域名做网站咋做百度引擎搜索
  • 泉州网红打卡地站长工具seo词语排名
  • 商城网站商家入驻功能整合营销案例
  • 360浏览器打开是2345网址导航win7优化大师免安装版
  • 顺德中小企业网站建设近三天的国内新闻
  • 能免费建手机网站吗重庆排名优化整站优化
  • 网站建设人员架构免费发帖推广平台
  • 制作网页的网站费用属于资本性支出吗产品推广计划方案模板
  • wordpress调用标签代码郑州厉害的seo顾问公司
  • 当前政府网站建设存在的问题及对策百度怎么推广广告
  • 网络广告营销的特性山西seo优化公司
  • 做网站的协议书和计划书新品推广活动方案
  • 网页兼容性站点市场监督管理局是干什么的
  • 关于做膳食的一些网站基本营销策略有哪些
  • 济南pc网站建设公司济南百度代理
  • 模板网站建设公司电话网络推广引流是做什么的