sqlserver FOR xml

本文通过创建班级和学生信息表并使用 SQL 的 FOR XML 子句,展示了如何将关系型数据转换为 XML 格式。包括 raw、auto 和 path 模式,以及如何使用 root 和 elements 属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--sql FOR xml

create table ClassInfo
(
CID int identity(1,1), --本表ID
Cnumber int, --班级人数
CName varchar(10) --班级名称
)

go
insert ClassInfo
select 20,'一年级1班'
union select 20,'一年级2班'
union select 20,'一年级3班'
union select 20,'一年级4班'
go
select * from ClassInfo
--Students (CID 班级表外键,SID学生信息表ID学生的学号就是,SName)
create table Students
(
[SID] int identity(1,1), --学号
CID int, --班级ID
SName varchar(10) --姓名
)
go
insert into Students
select 1,'张1'
union select 1,'张2'
union select 1,'张3'
union select 1,'张4'
union select 2,'张5'
union select 2,'张6'

--CID 本表ID,Cnumber 班级人数,CName
select * from ClassInfo
select * from Students

select * from ClassInfo WHERE CName='一年级1班'
SELECT CID,Cnumber,CName FROM ClassInfo WHERE CName='一年级1班' FOR xml raw

SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml raw

--raw to auto 把行数据变成节点数据
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml auto
--root属性 添加根结点
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml auto ,root('studentInfo')
--Elements 属性 把属性变成了节点的方式
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml auto ,root('studentInfo'),Elements
--path属性
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml path ,root('studentInfo')
/*
Path 是以数据基本结构也就是以字段为结点的形式返回Xml文档(这样说不专业可能容易理解)
Raw 是把数据里所有的字段以属性的方式显示出Xml文档
Auto 自动关连到相应的项目,和Raw一样在不加Elements属性时以这种方式返回数据
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值