sql使用大全文档格式.docx

上传人:b****6 文档编号:19044538 上传时间:2023-01-03 格式:DOCX 页数:46 大小:32.60KB
下载 相关 举报
sql使用大全文档格式.docx_第1页
第1页 / 共46页
sql使用大全文档格式.docx_第2页
第2页 / 共46页
sql使用大全文档格式.docx_第3页
第3页 / 共46页
sql使用大全文档格式.docx_第4页
第4页 / 共46页
sql使用大全文档格式.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

sql使用大全文档格式.docx

《sql使用大全文档格式.docx》由会员分享,可在线阅读,更多相关《sql使用大全文档格式.docx(46页珍藏版)》请在冰豆网上搜索。

sql使用大全文档格式.docx

),--次要数据文件1

MyDB_FG1_Dat2'

d:

\MyDB_FG1_2.ndf'

),--次要数据文件2

FILEGROUPMyDB_FG2--用户定义文件组2

MyDB_FG1_Dat'

e:

\MyDB_FG2.ndf'

)--次要数据文件

LOGON--日志文件

MyDB_log'

FILENAME='

\MyDB.ldf'

--B.修改默认数据文件组

ALTERDATABASEMyDBMODIFYFILEGROUPMyDB_FG1DEFAULT

--切换到新建的数据库MyDB

USEMyDB

--C.在默认文件组MyDB_FG1创建表,并且指定图像数据保存在用户定义文件组MMyDB_FG2

CREATETABLEMyTable

(colaintPRIMARYKEY,

colbchar(8),

colcimage)

TEXTIMAGE_ONMyDB_FG2

--在用户定义文件组MyDB_FG2上创建索引

CREATEINDEXIX_MyTableONMyTable(cola)ONMyDB_FG2

 

--D.将要删除数据文件MyDB_FG1_Dat1上的数据转移到其他数据文件中,并且清空数据文件MyDB_FG1_Dat1

DBCCSHRINKFILE(MyDB_FG1_Dat1,EMPTYFILE)

--删除数据文件MyDB_FG1_Dat1

ALTERDATABASEMyDBREMOVEFILEMyDB_FG1_Dat1

调整tempdb数据库的文件属性.sql:

--A.将tempdb数据库的主数据文件大小设置为10MB。

ALTERDATABASEtempdb

MODIFYFILE(

name=tempdev,

size=100MB)

--B.将tempdb数据库的主数据文件移动到指定的磁盘分区上,并且为其添加一个数据文件。

--移动主数据文件

ALTERDATABASEtempdbMODIFYFILE

tempdev'

\tempdb.mdf'

--添加次要数据文件

ALTERDATABASEtempdbADDFILE

tempdata_1'

\tempdb_data_1.ndf'

日期概念理解中的一些测试.sql:

--A.测试datetime精度问题

DECLARE@tTABLE(datechar(21))

INSERT@tSELECT'

1900-1-100:

00:

00.000'

00.001'

00.009'

00.002'

00.003'

00.004'

00.005'

00.006'

00.007'

00.008'

SELECTdate,转换后的日期=CAST(dateasdatetime)FROM@t

/*--结果

date转换后的日期

-----------------------------------------------

00.0001900-01-0100:

00.000

00.0011900-01-0100:

00.0091900-01-0100:

00.010

00.0021900-01-0100:

00.003

00.0031900-01-0100:

00.0041900-01-0100:

00.0051900-01-0100:

00.007

00.0061900-01-0100:

00.0071900-01-0100:

00.0081900-01-0100:

(所影响的行数为10行)

--B.对于datetime类型的纯日期和时间的十六进制表示

DECLARE@dtdatetime

--单纯的日期

SET@dt='

1900-1-2'

SELECTCAST(@dtasbinary(8))

--结果:

0x0000000100000000

--单纯的时间

01'

0x000000000000012C

--C.对于smalldatetime类型的纯日期和时间的十六进制表示

DECLARE@dtsmalldatetime

SELECTCAST(@dtasbinary(4))

0x00010000

10'

0x0000000A

CONVERT在日期转换中的使用示例.sql:

--字符转换为日期时,Style的使用

--1.Style=101时,表示日期字符串为:

mm/dd/yyyy格式

SELECTCONVERT(datetime,'

11/1/2003'

101)

2003-11-0100:

--2.Style=101时,表示日期字符串为:

dd/mm/yyyy格式

103)

2003-01-1100:

/*==日期转换为字符串==*/

2003-1-11'

--1.Style=101时,表示将日期转换为:

mm/dd/yyyy格式

SELECTCONVERT(varchar,@dt,101)

01/11/2003

--2.Style=103时,表示将日期转换为:

dd/mm/yyyy格式

SELECTCONVERT(varchar,@dt,103)

11/01/2003

/*==这是很多人经常犯的错误,对非日期型转换使用日期的style样式==*/

SELECTCONVERT(varchar,'

2003-1-11

SETDATEFORMAT对日期处理的影响.sql

--1.

/*--说明

SETDATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响

但不影响明确指定了style的CONVERT处理。

--示例,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SETDATAFORMAT的影响,第二个CONVERT转换指定了style,转换结果受style的影响。

--设置输入日期顺序为日/月/年

SETDATEFORMATDMY

--不指定Style参数的CONVERT转换将受到SETDATEFORMAT的影响

2-1-2005'

2005-01-0200:

--指定Style参数的CONVERT转换不受SETDATEFORMAT的影响

2005-02-0100:

--2.

如果输入的日期包含了世纪部分,则对日期进行解释处理时

年份的解释不受SETDATEFORMAT设置的影响。

--示例,在下面的代码中,同样的SETDATEFORMAT设置,输入日期的世纪部分与不输入日期的世纪部分,解释的日期结果不同。

--设置SETDATEFORMAT为:

月日年

SETDATEFORMATMDY

--输入的日期中指定世纪部分

01-2002-03'

SELECT@dt

2002-01-0300:

--输入的日期中不指定世纪部分

01-02-03'

2003-01-0200:

--3.

如果输入的日期不包含日期分隔符,那么SQLServer在对日期进行解释时

将忽略SETDATEFORMAT的设置。

--示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SETDATEFORMAT设置下,其解释的结果是一样的。

010203'

2001-02-0300:

日月年

--输入的日期中包含日期分隔符

2003-02-0100:

SETLANGUAGE对日期处理的影响示例.sql

--以下示例演示了在不同的语言环境(SETLANGUAGE)下,DATENAME与CONVERT函数的不同结果。

--设置会话的语言环境为:

English

SETLANGUAGEN'

English'

SELECT

DATENAME(Month,GETDATE())AS[Month],

DATENAME(Weekday,GETDATE())AS[Weekday],

CONVERT(varchar,GETDATE(),109)AS[CONVERT]

/*--结果:

MonthWeekdayCONVERT

----------------------------------------------------------

MarchTuesdayMar1520058:

59PM

简体中文

简体中文'

---------------------------------------------------------------------

05星期四051920052:

49:

20:

607PM

日期格式化处理.sql

SET@dt=GETDATE()

--1.短日期格式:

yyyy-m-d

SELECTREPLACE(CONVERT(varchar(10),@dt,120),N'

-0'

'

-'

--2.长日期格式:

yyyy年mm月dd日

--A.方法1

SELECTSTUFF(STUFF(CONVERT(char(8),@dt,112),5,0,N'

年'

),8,0,N'

月'

)+N'

日'

--B.方法2

SELECTDATENAME(Year,@dt)+N'

+DATENAME(Month,@dt)+N'

+DATENAME(Day,@dt)+N'

--3.长日期格式:

yyyy年m月d日

+CAST(DATEPART(Month,@dt)ASvarchar)+N'

--4.完整日期+时间格式:

yyyy-mm-ddhh:

mi:

ss:

mmm

SELECTCONVERT(char(11),@dt,120)+CONVERT(char(12),@dt,114)

日期推算处理.sql

DECLARE@numberint

SET@number=3

--1.指定日期该年的第一天或最后一天

--A.年的第一天

SELECTCONVERT(char(5),@dt,120)+'

1-1'

--B.年的最后一天

12-31'

--2.指定日期所在季度的第一天或最后一天

--A.季度的第一天

SELECTCONVERT(datetime,

CONVERT(char(8),

DATEADD(Month,

DATEPART(Quarter,@dt)*3-Month(@dt)-2,

@dt),

120)+'

1'

--B.季度的最后一天(CASE判断法)

DATEPART(Quarter,@dt)*3-Month(@dt),

120)

+CASEWHENDATEPART(Quarter,@dt)in(1,4)

THEN'

31'

ELSE'

30'

END)

--C.季度的最后一天(直接推算法)

SELECTDATEADD(Day,-1,

1+DATEPART(Quarter,@dt)*3-Month(@dt),

--3.指定日期所在月份的第一天或最后一天

--A.月的第一天

SELECTCONVERT(datetime,CONVERT(char(8),@dt,120)+'

--B.月的最后一天

SELECTDATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'

--C.月的最后一天(容易使用的错误方法)

SELECTDATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))

--4.指定日期所在周的任意一天

SELECTDATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)

--5.指定日期所在周的任意星期几

--A.星期天做为一周的第1天

SELECTDATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)

--B.星期一做为一周的第1天

SELECTDATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)

特殊日期加减函数.sql

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'

[dbo].[f_DateADD]'

)andxtypein(N'

FN'

N'

IF'

TF'

))

dropfunction[dbo].[f_DateADD]

/*--特殊日期加减函数

对于日期指定部分的加减,使用DATEADD函数就可以轻松实现。

在实际的处理中,还有一种比较另类的日期加减处理

就是在指定的日期中,加上(或者减去)多个日期部分

比如将2005年3月11日,加上1年3个月11天2小时。

对于这种日期的加减处理,DATEADD函数的力量就显得有点不够。

本函数实现这样格式的日期字符串加减处理:

y-m-dh:

m:

s.m|-y-m-dh:

s.m

说明:

要加减的日期字符输入方式与日期字符串相同。

日期与时间部分用空格分隔

最前面一个字符如果是减号(-)的话,表示做减法处理,否则做加法处理。

如果日期字符只包含数字,则视为日期字符中,仅包含天的信息。

/*--调用示例

SELECTdbo.f_DateADD(GETDATE(),'

11:

CREATEFUNCTIONdbo.f_DateADD(

@Datedatetime,

@DateStrvarchar(23)

)RETURNSdatetime

AS

BEGIN

DECLARE@bzint,@svarchar(12),@iint

IF@DateStrISNULLOR@DateISNULL

OR(CHARINDEX('

.'

@DateStr)>

AND@DateStrNOTLIKE'

%[:

]%[:

]%.%'

RETURN(NULL)

IF@DateStr='

'

RETURN(@Date)

SELECT@bz=CASE

WHENLEFT(@DateStr,1)='

THEN-1

ELSE1END,

@DateStr=CASE

WHENLEFT(@Date,1)='

THENSTUFF(RTRIM(LTRIM(@DateStr)),1,1,'

ELSERTRIM(LTRIM(@DateStr))END

IFCHARINDEX('

'

1

ORCHARINDEX('

@DateStr)=0

ANDCHARINDEX('

:

@DateStr)=0)

BEGIN

SELECT@i=CHARINDEX('

@DateStr+'

@s=REVERSE(LEFT(@DateStr,@i-1))+'

@DateStr=STUFF(@DateStr,1,@i,'

@i=0

WHILE@s>

and@i<

3

SELECT@Date=CASE@i

WHEN0THENDATEADD(Day,@bz*REVERSE(LEFT(@s,CHARINDEX('

@s)-1)),@Date)

WHEN1THENDATEADD(Month,@bz*REVERSE(LEFT(@s,CHARINDEX('

WHEN2THENDATEADD(Year,@bz*REVERSE(LEFT(@s,CHARINDEX('

END,

@s=STUFF(@s,1,CHARINDEX('

@s),'

@i=@i+1

END

IF@DateStr>

SELECT@Date=DATEADD(Millisecond

@bz*STUFF(@DateStr,1,CHARINDEX('

@DateStr),'

@Date),

@DateStr=LEFT(@DateStr,CHARINDEX('

@DateStr)-1)+'

@i=0

ELSE

SELECT@DateStr=@DateStr+'

@i=0

WHILE@DateStr>

WHEN0THENDATEADD(Hour,@bz*LEFT(@D

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1