SqlServer:SqlServer(xpath,字段约束,时间查询,数据文件查询及还原,压缩备份)

1.xpath

--1、文档
select @data
--2、任意级别是否存在price节点
select @data.exist('//price')
--3、获取所有book节点
select @data.query('//book')
--4、获取所有包含lang属性的节点
select @data.query('//*[@lang]') 
--5、获取第一个book节点
select @data.query('//book[1]')
--6、获取前两个book节点
select @data.query('//book[position()<=2]')
--7、获取最后一个book节点
select @data.query('//book[last()]')
--8、获取price>35的所有book节点
select @data.query('//book[price>35]')
--9、获取category="WEB"的所有book节点
select @data.query('//book[@category="WEB"]')
--10、获取title的lang="en"的所有book节点
select @data.query('//book/title[@lang="en"]')
--11、获取title的lang="en"且 price>35的所有book节点
select @data.query('//book[./title[@lang="en"] or price>35 ]')
--12、获取title的lang="en"且 price>35的第一book的(第一个)title
select @data.query('//book[./title[@lang="en"] and price>35 ]').value('(book/title)[1]','varchar(max)')
--13、等价于12
select @data.value('(//book[./title[@lang="en"] and price>35 ]/title)[1]','varchar(max)')
--14、获取title的lang="en"且 price>35的第一book的(第一个)title的lang属性
select @data.value('((//book[@category="WEB" and price>35 ]/title)[1]/@lang)[1]','varchar(max)')
--15、获取第一本书的title
select Tab.Col.value('(book/title)[1]','varchar(max)') as title
    from @data.nodes('bookstore')as Tab(Col) 
--16、获取每本书的第一个author
select Tab.Col.value('author[1]','varchar(max)') as title
    from @data.nodes('//book')as Tab(Col)
--17、获取所有book的所有信息
select
T.C.value('title[1]','varchar(max)') as title,
T.C.value('year[1]','int') as year,
T.C.value('title[1]','varchar(max)')as title,
T.C.value('price[1]','float') as price,
T.C.value('author[1]','varchar(max)') as author1,
T.C.value('author[2]','varchar(max)') as author2,
T.C.value('author[3]','varchar(max)') as author3,
T.C.value('author[4]','varchar(max)') as author4
from @data.nodes('//book') as T(C)
--18、获取不是日语(lang!="jp")且价格大于35的书的所有信息
select
T.C.value('title[1]','varchar(max)') as title,
T.C.value('year[1]','int') as year,
T.C.value('title[1]','varchar(max)')as title,
T.C.value('price[1]','float') as price,
T.C.value('author[1]','varchar(max)') as author1,
T.C.value('author[2]','varchar(max)') as author2,
T.C.value('author[3]','varchar(max)') as author3,
T.C.value('author[4]','varchar(max)') as author4
from @data.nodes('//book[./title[@lang!="jp"] and price>35 ]') as T(C)
--19、获取后多少个
SELECT resultDataset.query('/root/rows/row[position()>=(last()-2)]') FROM auditResult 

2.字段约束:

--获取约束信息
select * from information_schema.constraint_column_usage---可以获取指定数据库中的所有约束的信息以及约束与列的对应关系
go
 
select * from information_schema.constraint_table_usage---查询结果中只包含表和约束的对应关系,并没有约束对应的列信息
go
 
select * from information_schema.table_constraints---查询结果中只包含表和约束的对应关系,并没有约束对应的列信息
go
 
select * from information_schema.key_column_usage---可以获取指定数据库中的所有键约束的列信息,包括主键约束中的主键列,唯一约束中的唯一键列和外键约束中的引用列
go
 
select * from sys.key_constraints----获取约束信息
 
select * from sys.foreign_keys--获取表中的外键约束
 
select * from sys.foreign_key_columns--获取外键约束的列信息
 
select * from information_schema.referential_constraints--获取外键约束信息
 
select * from information_schema.check_constraints--获取检查约束信息

 

3.时间查询:

获取本周一日期
SELECT  @temppath= REPLACE(CONVERT(VARCHAR, DATEADD(WK,DATEDIFF(wk,0,getdate()),0),23),'-','')

获取上周一日期
SELECT  @lastWeekMonday= REPLACE(CONVERT(VARCHAR, DATEADD(day,-(DATEPART(weekday,GETDATE())+5),GETDATE()),23),'-','')

4.字符截取:

--获取该字符从后往前第一次出现的位置
SELECT CHARINDEX(':',reverse('qweassa:aas:sqwe'))
--截取该字符最后一次出现的位置到最后 SELECT right('qweassa:aas:sqwe',CHARINDEX(':',reverse('qweassa:aas:sqwe'))-1)

5.数据文件查询及还原:

-------获取备份文件的原始数据路径和,原始日志路径
restore filelistonly from disk = 'D:kk	est411300_cw.bak'
-------获取备份文件的原始数据库名,数据库版本
restore headeronly from disk='D:kk	est411300_cw.bak'

-------还原
RESTORE DATABASE AbpFirst FROM DISK='D:kk411300_cw.bak'
WITH
MOVE '411300_cw' TO 'D:kkku411300_cw.mdf',
MOVE '411300_cw_log' TO 'D:kkku411300_cw_log.ldf'

6.压缩备份

-----------------------压缩备份命令
with STATS = 1,compression
-----------------------
DECLARE @date VARCHAR(200)
DECLARE @fileName VARCHAR(200)
SELECT @date =  REPLACE(REPLACE(CONVERT(VARCHAR(200),GETDATE(),20),' ','-'),':','-')
SET @fileName = 'G:DatabaseBackupCC_DATABAE_'+@date+'.bak'
BACKUP DATABASE [CC_DATABAE] TO DISK = @fileName with STATS = 1,compression
原文地址:https://www.cnblogs.com/kuangzhisen/p/8010841.html