SQL Server 安装及其XML应用.docx
《SQL Server 安装及其XML应用.docx》由会员分享,可在线阅读,更多相关《SQL Server 安装及其XML应用.docx(14页珍藏版)》请在冰豆网上搜索。
SQLServer安装及其XML应用
7.2.2SQLServer的安装
由于SQLServer提供了四个不同的版本,安装配置方法差别较大,为了便于读者自学上机练习,这里仅介绍在WindowsXP操作系统下SQLServer个人版的安装过程,其它版本的安装方法请参考SQLServer的专业资料。
按照本节的安装方法,SQLServer不区分SQL命令中字母的大小写。
在WindowsXP操作系统下SQLServer个人版本的安装步骤如下:
1)当正常启动计算机后,把SQLServer2000光盘放入CD-ROM驱动器中,计算机自动运行安装程序向导,出现图7.5所示的窗口,单击“安装SQLServer2000组件”即可见图7.6所示的窗口。
图7.5安装SQLServer2000初始窗口
图7.6安装组件选择窗口
2)在图7.6中单击“安装数据库服务器”后出现一个“欢迎”窗口,其中有一些文字说明,单击“下一步”按钮,即可见“计算机名”窗口(图7.7)。
图7.7SQLServer的计算机名窗口
3)由于安装的是个人版本,计算机名称不需输入,因此,在“计算机名”窗口(图7.7)中选择“本地计算机”后单击“下一步”按钮,可见“安装选择”窗口(图7.8)。
图7.8SQLServer的安装选择窗口
4)在“安装选择”窗口(图7.8)中选择“创建SQLServer实例,或安装客户端工具”,单击“下一步”按钮,又可见“用户信息”窗口(图7.9)。
图7.9SQLServer的用户信息窗口
5)在“用户信息”窗口(图7.9)中输入用户姓名和公司名称,单击“下一步”按钮,可见一个“软件许可证协议”窗口(图7.10),我们只要单击“是”按钮,即出现“安装定义”窗口(图7.11)。
图7.10SQLServer的CD-Key窗口
图7.11SQLServer的安装定义窗口
6)在“安装定义”窗口(图7.11)中选择“服务器和客户端工具”,单击“下一步”按钮,可见“实例名”窗口(图7.12)。
图7.12SQLServer的实例名窗口
7)在“实例名”窗口(图7.12)中选中“默认”复选框,单击“下一步”按钮,可见“安装类型”窗口(图7.13)。
图7.13SQLServer的安装类型窗口
8)在“安装类型”窗口(图7.13)中选择“典型”,并根据需要指定“目的文件夹”后单击“下一步”按钮,可见“服务帐户”窗口(图7.14)。
图7.14SQLServer的服务帐户窗口
9)在“服务帐户”窗口(图7.14)中选择“对每个服务使用同一个帐户,自动启动SQLServer服务”和“使用本地系统帐户”(初学的读者在个人计算机上安装SQLServer时请务必选择此项)。
然后单击“下一步”按钮,可见“身份验证模式”窗口(图7.15)。
图7.15SQLServer的身份验证模式窗口
10)在“身份验证模式”窗口(图7.15)中选择“Windows身份验证模式”,单击“下一步”按钮,可见一个名为“开始复制文件”的窗口(图7.16),我们只要在其中单击“下一步”按钮即可开始程序文件的复制。
图7.16SQLServer的开始复制程序文件窗口
11)只要我们稍等片刻,就会出现一个“安装完毕”窗口(图7.17)。
我们只要选择“是的,我想现在重新启动计算机。
”,然后单击完成按钮,等计算机重新启动后即完成了SQLServer的安装工作。
8.4.3SQLServer2008中XML应用
Microsoft在SQLServer2000中就推出了与XML相关的功能,并Transact-SQL语言的有关命令中增加了关键字FORXML和OPENXML,使开发人员可以通过编写Transact-SQL代码来获取XML流形式的查询结果,或者将XML文档格式的数据导入到数据库的基本表中。
SQLServer2005不仅扩展了这些关于支持XML的功能,而且推出了一个支持XSDschema验证、基于XQuery的操作和XML索引的本地XML数据类型。
SQLServer2008在其之前版本支持XML功能的基础之上,做了许多新改进和补充来解决客户在存储和操纵数据库中XML数据时所面临的挑战,不仅程序员能够定义XML数据类型的变量、参数,创建处理XML类型数据的视图、触发器,还能够使用XQuery语言完成对XML文档结点的遍历和数据查询等。
由于篇幅所限,本节只简单介绍在SQLSever2008环境中如何将数据库基本表中的数据导出为XML文档,以及如何将XML文档数据导入数据库的基本表。
1、基本表导出为XML文档
FORXML是对标准SQL语言SELECT语句的扩展,数据库管理系统会根据FORXML使用的模式,返回具有一定格式的XML文档片段以便不同应用程序或者用户之间进行数据交互。
在SQLServer2008中使用带FORXML子句的SELECT查询语句就可以从数据库基本表中获得XML数据,而FORXML子句主要使用RAW和PATH模式。
(1)单张基本表的导出
为介绍方便,我们以第一章介绍的学生表(students)为例,并希望将这张学生表中的数据导出为XML文档格式的数据,则只要使用表8-7中第3行的SELECT语句即可。
表8-7将基本表数据导出为XML格式数据
序号
代码
1
2
3
USEStudents10_Mis
GO
SELECT*FROMStudentsFORXMLRAW,ELEMENTS;
注意,表8-7中的第1行和第2行是指定SELECT语句操作的数据库,如果我们在前面已经使用了这个命令,则后面的操作就可以不使用这两行命令了。
因此,本节后面的例子中都不再出现这两行命令。
关键字RAW告诉SQLServer2008这里使用的是RAW模式。
RAW模式返回的XML文档片段有一个特点,即每个行元素(默认标签为)是基本表对应的一条记录,行元素中的每个子元素分别包含学号、姓名等信息。
ELEMENTS参数能使学号、姓名等信息以行元素的子元素形式返回;如果不使用,默认情况下SQLServer2008会以行元素的属性形式返回。
运行表8-7中的命令就得到如图8-10所示的查询结果。
从右下角的结果窗口可以看出,查询所得的XML文档数据被挤在一个只有一个单元格的表格中。
单击这个单元格即可打开一个新的XML文档显示窗口(如图8-11)。
由于窗口大小的限制,这里只显示了基本表Students中两条记录对应的,由和
标记的XML元素。
仔细分析可以发现,这个窗口中显示的XML文档与表8-2中XML非常相似,只是没有了根元素标记和,且所有的标记变成了,
标记变成了。
图8-10基本表导出为XML
(1)
图8-11基本表导出为XML
(2)
(2)多张基本表的导出
如果要从多张相互参照的基本表中导出XML数据应该怎么办呢?
这里仍然以第一章介绍的学生表(Students)、课程表(Courses)和成绩表(Reports)为例,我们希望导出一个包含学号(Sno)、姓名(Sname)、性别(Ssex),所修课程号(Cno)、课程名称(Cname)、课程学分(Credits)和成绩(grade)数据的XML文档,则我们可以使用下面的SELECT语句,并使用PATH模式。
表8-8将多个基本表数据导出为XML格式数据
序号
代码
1
2
3
4
5
6
7
8
9
10
SELECTS.SnoAS"report/Student/Sno",
S.SnameAS"report/Student/Sname",
S.SsexAS"report/Student/Ssex",
C.CnoAS"report/Course/Cno",
C.CnameAS"report/Course/Cname",
C.CreditsAS"report/Course/Credits",
R.GradeAS"report/grade"
FROMdbo.StudentsASS,dbo.CoursesASC,dbo.ReportsASR
WHERES.sno=R.SnoANDC.Cno=R.Cno
FORXMLPATH(''),ROOT('reports');
值得注意的是,表8-8中从第1行至第10行的代码为一条完整的SELECT语句,它是第一章学习过的数据库查询语句SELECT的简单扩充。
最后一行FORXMLPATH(''),ROOT('reports')是为XML而特别扩充的,它表示查询结果为XML格式,关键词PATH表示这里使用的是FORXML的PATH模式,ROOT('reports')表示把默认的根元素设置为reports。
report/Student/Sno是XPATH的一种路径表示法,表示的是report元素有个子元素Student,而Student下面又有个子元素Sno,且这个Sno就是我们要查询的数据。
在SSMS的“新建查询”窗口中输入并执行上面的语句就得到表8-9所示的XML格式的数据(部分),这里只包含了王建平同学选修的两门课对应的,由和标记的XML元素。
表8-9多个基本表数据导出为XML文档数据(部分)
序号
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
S01
王建评
男
C01
英语
4
92
S01
王建评
男
C03
数据库
2
84
……
2、XML文档导入基本表
前面介绍了如何将数据库的基本表中数据导出为XML文档,下面则介绍如何把XML文档数据导入到SQLServer2008数据库的基本表中。
(1)向基本表中添加记录
假设数据库Students10_Mis中已经存在基本表Students且不存在学号为S07的学生记录,则只要在SSMS的“新建查询”窗口中书写如表8-10中的代码,就可以将以XML文当格式描述的学生记录(S07,邵宁军,男,19,计算机)导入到基本表Students中。
表8-10将XML文档数据导入基本表中
序号
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DECLARE@myDocXML
DECLARE@imyDocINT
SET@myDoc='
S07
邵宁军
男
19
计算机
'
EXECUTESP_XML_PREPAREDOCUMENT@imyDocOUTPUT,@myDoc
INSERTINTOStudents
SELECT*
FROMOPENXML(@imyDoc,'/Students/Student',1)
WITH(Snochar(5)'Sno',
Snamevarchar(50)'Sname',
Ssexchar
(2)'Ssex',
Sagechar
(2)'Sage',
Dnamechar
(2)'Dname')
EXECUTESP_XML_REMOVEDOCUMENT@imyDoc
这里简单介绍一下表8-10中各行命令的作用。
第1行和第2行声明了两个变量,名称分别为“myDoc”和“imyDoc”,类型分别为XML和整型INT,“@”表示Transact-SQL变量。
第3行到第12行是给变量mydoc赋值,其值为表8-10中第3行和第12行两个单引号之间的XML文档描述的学生数据。
第13行和第22行是调用SQLSEVER2008系统中的两个存储过程,且它们在运行中不仅指定使用第3-4行声明的两个变量,同时指定把SELECT命令从XML文档格式中查询到的,由和标记的元素以一条记录的形式插入到已经存在的基本表Students中。
同样,在SSMS的“新建查询”窗口中输入以上代码并执行后,就完成将XML文档数据导入基本表的目的,且通过“SELECT*FROMStudents”语句可以查看基本表Students中原有和新导入的数据。
(2)新建基本表并添加记录
如果数据库Students10_Mis中不存在基本表Students,则只要在SSMS的“新建查询”窗口中书写如表8-11中的代码并执行,就可以实现在该数据库中创建一个新的基本表Students并将以XML文当格式描述的两条学生记录(由和标记的元素)导入到这个新建的基本表中。
表8-11创建基本表并将XML文档数据导入
序号
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
DECLARE@myDocXML
DECLARE@imyDocINT
SET@myDoc='
S01
王建平
男
21
自动化
S02
刘华
女
19
自动化
'
EXECUTESP_XML_PREPAREDOCUMENT@imyDocOUTPUT,@myDoc
SELECT*INTOStudents
FROMOPENXML(@imyDoc,'/Students/Student',2)
WITH(Snochar(5)'Sno',
Snamevarchar(50)'Sname',
Ssexchar
(2)'Ssex',
Sagechar
(2)'Sage',
Dnamechar
(2)'Dname')
EXECUTESP_XML_REMOVEDOCUMENT@imyDoc
将表8-11与表8-10比较发现,其代码基本一致,唯一不同的是在调用SQLSEVER2008系统的存储过程中间没有使用INSERT子语句,这就表示需要创建一个新的基本表。