直接进入正题。
首先定义变量
DECLARE @x xml
(这样会保存至默认的数据库,如果有需要的话要在开头使用自己的数据库)如下:
use XMLTest
接下来给x赋值就行了,使用set:
SET @x = ''
引号里面写要用到的xml内容
插入部分使用select into:
DECLARE @out INT
EXEC sp_xml_preparedocument @out OUTPUT,@x
SELECT *
INTO book
FROM OPENXML(@out,'//book',2)
WITH(
year INT '@year',
title VARCHAR(50) 'title',
publisher VARCHAR(50) 'publisher',
price VARCHAR(50) 'price'
)
这样book节点下的属性year和三个子元素就存入book表了(book表会自动创建)
表格创建后可以通过alter插入约束
alter table book alter column title VARCHAR(50) not null
alter table book add constraint PK_title primary key(title)
值得一提的是关于title设置为非空我只想到了这种方法(不知道在建表时候怎么设置),有其他方式欢迎探讨
之后就可以为其他表添加外键了(对于title)
alter table author add constraint FK_author foreign key(title) references book(title)
这里为author表添加外键约束,依赖于book表的title
自己折腾的一些过程,欢迎大家作为参考,避免过程中的一些坑