SQL语句大全完整版Word格式文档下载.docx
《SQL语句大全完整版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SQL语句大全完整版Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
\MyDB_FG1_1.ndf'
),--次要数据文件1(NAME='
MyDB_FG1_Dat2'
d:
\MyDB_FG1_2.ndf'
),--次要数据文件2FILEGROUPMyDB_FG2--用户定义文件组2(NAME='
MyDB_FG1_Dat'
e:
\MyDB_FG2.ndf'
)--次要数据文件LOGON--日志文件(NAME='
MyDB_log'
FILENAME='
\MyDB.ldf'
)GO--B.修改默认数据文件组ALTERDATABASEMyDBMODIFYFILEGROUPMyDB_FG1DEFAULTGO--切换到新建的数据库MyDBUSEMyDB--C.在默认文件组MyDB_FG1创建表,并且指定图像数据保存在用户定义文件组MMyDB_FG2CREATETABLEMyTable(colaintPRIMARYKEY,colbchar(8),colcimage)TEXTIMAGE_ONMyDB_FG2--在用户定义文件组MyDB_FG2上创建索引CREATEINDEXIX_MyTableONMyTable(cola)ONMyDB_FG2GO--D.将要删除数据文件MyDB_FG1_Dat1上的数据转移到其他数据文件中,并且清空数据文件MyDB_FG1_Dat1DBCCSHRINKFILE(MyDB_FG1_Dat1,EMPTYFILE)--删除数据文件MyDB_FG1_Dat1ALTERDATABASEMyDBREMOVEFILEMyDB_FG1_Dat1
调整tempdb数据库的文件属性.sql:
--A.将tempdb数据库的主数据文件大小设置为10MB。
ALTERDATABASEtempdbMODIFYFILE(name=tempdev,size=100MB)GO--B.将tempdb数据库的主数据文件移动到指定的磁盘分区上,并且为其添加一个数据文件。
--移动主数据文件ALTERDATABASEtempdbMODIFYFILE(NAME='
tempdev'
\tempdb.mdf'
)--添加次要数据文件ALTERDATABASEtempdbADDFILE(NAME='
tempdata_1'
\tempdb_data_1.ndf'
)
日期概念理解中的一些测试.sql:
--A.测试datetime精度问题DECLARE@tTABLE(datechar(21))INSERT@tSELECT'
1900-1-100:
00:
00.000'
INSERT@tSELECT'
00.001'
00.009'
00.002'
00.003'
00.004'
00.005'
00.006'
00.007'
00.008'
SELECTdate,转换后的日期=CAST(dateasdatetime)FROM@t/*--结果date转换后的日期-----------------------------------------------1900-1-100:
00.0001900-01-0100:
00.0001900-1-100:
00.0011900-01-0100:
00.0091900-01-0100:
00.0101900-1-100:
00.0021900-01-0100:
00.0031900-1-100:
00.0031900-01-0100:
00.0041900-01-0100:
00.0051900-01-0100:
00.0071900-1-100:
00.0061900-01-0100:
00.0071900-01-0100:
00.0081900-01-0100:
00.007(所影响的行数为10行)--*/GO--B.对于datetime类型的纯日期和时间的十六进制表示DECLARE@dtdatetime--单纯的日期SET@dt='
1900-1-2'
SELECTCAST(@dtasbinary(8))--结果:
0x0000000100000000--单纯的时间SET@dt='
01'
0x000000000000012CGO--C.对于smalldatetime类型的纯日期和时间的十六进制表示DECLARE@dtsmalldatetime--单纯的日期SET@dt='
SELECTCAST(@dtasbinary(4))--结果:
0x00010000--单纯的时间SET@dt='
10'
0x0000000A
CONVERT在日期转换中的使用示例.sql:
--字符转换为日期时,Style的使用--1.Style=101时,表示日期字符串为:
mm/dd/yyyy格式SELECTCONVERT(datetime,'
11/1/2003'
101)--结果:
2003-11-0100:
00.000--2.Style=101时,表示日期字符串为:
dd/mm/yyyy格式SELECTCONVERT(datetime,'
103)--结果:
2003-01-1100:
00.000/*==日期转换为字符串==*/DECLARE@dtdatetimeSET@dt='
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的影响SELECTCONVERT(datetime,'
2-1-2005'
)--结果:
2005-01-0200:
00.000--指定Style参数的CONVERT转换不受SETDATEFORMAT的影响SELECTCONVERT(datetime,'
2005-02-0100:
00.000GO--2./*--说明如果输入的日期包含了世纪部分,则对日期进行解释处理时年份的解释不受SETDATEFORMAT设置的影响。
--*/--示例,在下面的代码中,同样的SETDATEFORMAT设置,输入日期的世纪部分与不输入日期的世纪部分,解释的日期结果不同。
DECLARE@dtdatetime--设置SETDATEFORMAT为:
月日年SETDATEFORMATMDY--输入的日期中指定世纪部分SET@dt='
01-2002-03'
SELECT@dt--结果:
2002-01-0300:
00.000--输入的日期中不指定世纪部分SET@dt='
01-02-03'
2003-01-0200:
00.000GO--3./*--说明如果输入的日期不包含日期分隔符,那么SQLServer在对日期进行解释时将忽略SETDATEFORMAT的设置。
--*/--示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SETDATEFORMAT设置下,其解释的结果是一样的。
月日年SETDATEFORMATMDYSET@dt='
010203'
2001-02-0300:
00.000--设置SETDATEFORMAT为:
日月年SETDATEFORMATDMYSET@dt='
00.000--输入的日期中包含日期分隔符SET@dt='
2003-02-0100:
00.000
SETLANGUAGE对日期处理的影响示例.sql
--以下示例演示了在不同的语言环境(SETLANGUAGE)下,DATENAME与CONVERT函数的不同结果。
USEmaster--设置会话的语言环境为:
EnglishSETLANGUAGEN'
English'
SELECTDATENAME(Month,GETDATE())AS[Month],DATENAME(Weekday,GETDATE())AS[Weekday],CONVERT(varchar,GETDATE(),109)AS[CONVERT]/*--结果:
MonthWeekdayCONVERT----------------------------------------------------------MarchTuesdayMar1520058:
59PM--*/--设置会话的语言环境为:
简体中文SETLANGUAGEN'
简体中文'
SELECTDATENAME(Month,GETDATE())AS[Month],DATENAME(Weekday,GETDATE())AS[Weekday],CONVERT(varchar,GETDATE(),109)AS[CONVERT]/*--结果MonthWeekdayCONVERT---------------------------------------------------------------------05星期四051920052:
49:
20:
607PM--*/
日期格式化处理.sql日期推算处理.sql
日期格式化处理.sql
DECLARE@dtdatetimeSET@dt=GETDATE()--1.短日期格式:
yyyy-m-dSELECTREPLACE(CONVERT(varchar(10),@dt,120),N'
-0'
'
-'
)--2.长日期格式:
yyyy年mm月dd日--A.方法1SELECTSTUFF(STUFF(CONVERT(char(8),@dt,112),5,0,N'
年'
),8,0,N'
月'
)+N'
日'
--B.方法2SELECTDATENAME(Year,@dt)+N'
+DATENAME(Month,@dt)+N'
+DATENAME(Day,@dt)+N'
--3.长日期格式:
yyyy年m月d日SELECTDATENAME(Year,@dt)+N'
+CAST(DATEPART(Month,@dt)ASvarchar)+N'
--4.完整日期+时间格式:
yyyy-mm-ddhh:
mi:
ss:
mmmSELECTCONVERT(char(11),@dt,120)+CONVERT(char(12),@dt,114)
日期推算处理.sql
DECLARE@dtdatetimeSET@dt=GETDATE()DECLARE@numberintSET@number=3--1.指定日期该年的第一天或最后一天--A.年的第一天SELECTCONVERT(char(5),@dt,120)+'
1-1'
--B.年的最后一天SELECTCONVERT(char(5),@dt,120)+'
12-31'
--2.指定日期所在季度的第一天或最后一天--A.季度的第一天SELECTCONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt)-2,@dt),120)+'
1'
)--B.季度的最后一天(CASE判断法)SELECTCONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+CASEWHENDATEPART(Quarter,@dt)in(1,4)THEN'
31'
ELSE'
30'
END)--C.季度的最后一天(直接推算法)SELECTDATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+'
)--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
QQ291911320
--测