当前位置:Gxlcms > 数据库问题 > SQL Server 2008语句大全完整版

SQL Server 2008语句大全完整版

时间:2021-07-01 10:21:17 帮助过:71人阅读

设置内存选项 

--======================== 
 
--设置 min server memory 配置项 
EXEC sp_configure N‘min server memory (MB)‘,0  
--设置 max server memory 配置项 
EXEC sp_configure N‘max server memory (MB)‘,256  
--使更新生效 
RECONFIGURE WITH OVERRIDE 
 
--============================================================ 
 
--======================== 

使用文件及文件组.sql 

--======================== 
 
/*--功能说明 下面的代码是在SQL Server 2000上创建名为 MyDB 的数据库 
 该数据库包括1个主要数据文件、3个用户定义的文件组和1个日志文件 
 ALTER DATABASE句将用户定义文件组指定为默认文件组。  
 之后,通过指默认的文件组来创建表,并且将图像数据和索引放到指定的文件组中。 
 最后,将文件组中的指定数据文件删除 --*/  
 --切换到 master 数据库 
 USE master 
 GO  
 --A. 创建数据库 MyDB 
 CREATE DATABASE MyDB 
    ON PRIMARY      --主文件组和主要数据文件  
    (    NAME=‘MyDB_Primary‘,  
        FILENAME= ‘c:\MyDB_Prm.mdf‘ 
    ), 
    FILEGROUP MyDB_FG1  --用户定义文件组1  
    ( 
         NAME= ‘MyDB_FG1_Dat1‘,  
         FILENAME= ‘c:\MyDB_FG1_1.ndf‘ 
    ), 
    --次要数据文件1  
    (  
        NAME= ‘MyDB_FG1_Dat2‘,  
        FILENAME= ‘d:\MyDB_FG1_2.ndf‘ 
    ), 
    --次要数据文件
    FILEGROUP MyDB_FG2--用户定义文件组2  
    (  
        NAME= ‘MyDB_FG1_Dat‘,  
        FILENAME= ‘e:\MyDB_FG2.ndf‘ 
    ), 
    --次要数据文件LOG ON --日志文件  
    (  
        NAME=‘MyDB_log‘,  
        FILENAME=‘d:\MyDB.ldf‘ 
    )  
 
--DUMP TRANSACTION MyDB WITH NO_LOG and truncate_only 
GO  
 
--B. 修改默认数据文件组 
ALTER DATABASE MyDB  
    MODIFY FILEGROUP MyDB_FG1 DEFAULT 
GO 
---切换到新建的数据库 MyDB 
USE MyDB 
 
--C. 在默认文件组MyDB_FG1创建表,并且指定图像数据保存在用户定义文件组MMyDB_FG2 
CREATE TABLE MyTable  
    (  
        cola int PRIMARY KEY ,  
        colb char(8) ,  
        colc image  
    )  
TEXT IMAGE_ON MyDB_FG2 
--在用户定义文件组MyDB_FG2上创建索引 
CREATE INDEX IX_MyTable 
    ON MyTable(cola) 
    ON MyDB_FG2 
GO  
     
--D. 将要删除数据文件MyDB_FG1_Dat1上的数据转移到其他数据文件中, 
--   并且清空数据文件MyDB_FG1_Dat1 
DBCC SHRINKFILE(MyDB_FG1_Dat1,EMPTYFILE) 
--删除数据文件MyDB_FG1_Dat1 
ALTER DATABASE MyDB REMOVE FILE MyDB_FG1_Dat1 
 
--========================================================================== 
 
--=============================== 

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

--=============================== 
 
--A. tempdb数据库的主数据文件大小设置为10MB 
ALTER DATABASE tempdb  
    MODIFY FILE( name=tempdev, size=100 MB) 
GO  
--B. tempdb数据库的主数据文件移动到指定的磁盘分区上,并且为其添加一个数据文件。 
--移动主数据文件 
ALTER DATABASE tempdb  
    MODIFY FILE ( NAME=‘tempdev‘, FILENAME=‘d:\tempdb.mdf‘) 
--添加次要数据文件 
ALTER DATABASE tempdb 
    ADD FILE ( NAME=‘tempdata_1‘, FILENAME=‘d:\tempdb_data_1.ndf‘) 
     
--============================================================================ 
 
--=============================== 

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

--=============================== 
 
--A. 测试 datetime 精度问题 
DECLARE @t TABLE(date char(21)) 
INSERT @t SELECT ‘1900-1-1 00:00:00.000‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.001‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.009‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.002‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.003‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.004‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.005‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.006‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.007‘ 
INSERT @t SELECT ‘1900-1-1 00:00:00.008‘ 
SELECT date,转换后的日期=CAST(date as datetime) 
    FROM @t  
/*--结果 date 转换后的日期  
--------------------- --------------------------  
1900-1-1 00:00:00.000  
1900-01-01 00:00:00.000  
1900-1-1 00:00:00.001  
1900-01-01 00:00:00.000  
1900-1-1 00:00:00.009  
1900-01-01 00:00:00.010  
1900-1-1 00:00:00.002  
1900-01-01 00:00:00.003  
1900-1-1 00:00:00.003  
1900-01-01 00:00:00.003  
1900-1-1 00:00:00.004  
1900-01-01 00:00:00.003  
1900-1-1 00:00:00.005  
1900-01-01 00:00:00.007  
1900-1-1 00:00:00.006  
1900-01-01 00:00:00.007  
1900-1-1 00:00:00.007  
1900-01-01 00:00:00.007  
1900-1-1 00:00:00.008  
1900-01-01 00:00:00.007  
(所影响的行数为 10 行) -- 
*/ 
GO  
--B. 对于 datetime 类型的纯日期和时间的十六进制表示 
DECLARE @dt datetime  
--单纯的日期 
    SET @dt=‘1900-1-2‘SELECT CAST(@dt as binary(8)) 
    --结果: 0x0000000100000000 
    --单纯的时间 
    SET @dt=‘00:00:01‘SELECT CAST(@dt as binary(8)) 
--结果: 0x000000000000012CGO  
--C. 对于 smalldatetime 类型的纯日期和时间的十六进制表示 
DECLARE @dt smalldatetime  
--单纯的日期 
    SET @dt=‘1900-1-2‘SELECT CAST(@dt as binary(4)) 
    --结果: 0x00010000 
    --单纯的时间 
    SET @dt=‘00:10‘SELECT CAST(@dt as binary(4)) 
--结果: 0x0000000A 
 
--====================================================================== 
 
--================================= 

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

--================================= 
 
--字符转换为日期时,Style的使用 
--1. Style=101,表示日期字符串为:mm/dd/yyyy格式 
SELECT CONVERT(datetime,‘11/1/2003‘,101) 
--结果:2003-11-01 00:00:00.000 
--2. Style=101,表示日期字符串为:dd/mm/yyyy格式 
SELECT CONVERT(datetime,‘11/1/2003‘,103) 
--结果:2003-01-11 00:00:00.000  
/*== 日期转换为字符串 ==*/ 
DECLARE @dt datetime 
    SET @dt=‘2003-1-11‘  
--1. Style=101,表示将日期转换为:mm/dd/yyyy 格式 
SELECT CONVERT(varchar,@dt,101) 
--结果:01/11/2003--2. Style=103,表示将日期转换为:dd/mm/yyyy 格式 
SELECT CONVERT(varchar,@dt,103) 
--结果:11/01/2003  
/*== 这是很多人经常犯的错误,对非日期型转换使用日期的style样式 ==*/ 
SELECT CONVERT(varchar,‘2003-1-11‘,101) 
--结果:2003-1-11 
 
 
--===================================================================== 
 
--============================= 

对日期处理的影响.sql 

--============================= 
 
--1. 
/*-- 
说明 SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响  
但不影响明确指定了styleCONVERT处理。  
--*/  
--示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT 
--影响,第二个CONVERT转换指定了style,转换结果受style的影响。 
--设置输入日期顺序为 // 
SET DATEFORMAT DMY 
--不指定Style参数的CONVERT转换将受到SET DATEFORMAT的影响 
SELECT CONVERT(datetime,‘2-1-2005‘) 
--结果: 2005-01-02 00:00:00.000 
--指定Style参数的CONVERT转换不受SET DATEFORMAT的影响 
SELECT CONVERT(datetime,‘2-1-2005‘,101) 
--结果: 2005-02-01 00:00:00.000GO  
--2. 
/*-- 
说明 如果输入的日期包含了世纪部分,则对日期进行解释处理时  
年份的解释不受SET DATEFORMAT设置的影响。  
--*/  
--示例,在下面的代码中,同样的SET DATEFORMAT设置,输入日期的世纪部分与不输入日期的 
--世纪部分,解释的日期结果不同。 
DECLARE @dt datetime  
--设置SET DATEFORMAT:月日年 
SET DATEFORMAT MDY 
--输入的日期中指定世纪部分 
SET @dt=‘01-2002-03‘SELECT @dt 
--结果: 2002-01-03 00:00:00.000 
--输入的日期中不指定世纪部分 
SET @dt=‘01-02-03‘SELECT @dt 
--结果: 2003-01-02 00:00:00.000GO  
--3. 
/*-- 
说明 如果输入的日期不包含日期分隔符,那么SQL Server在对日期进行解释时  
将忽略SET DATEFORMAT的设置。  
--*/  
--示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT设置下, 
--其解释的结果是一样的。 
DECLARE @dt datetime  
--设置SET DATEFORMAT:月日年 
SET DATEFORMAT MDY 
SET @dt=‘010203‘SELECT @dt 
--结果: 2001-02-03 00:00:00.000 
--设置SET DATEFORMAT:日月年 
SET DATEFORMAT DMY 
SET @dt=‘010203‘SELECT @dt 
--结果: 2001-02-03 00:00:00.000 
--输入的日期中包含日期分隔符 
SET @dt=‘01-02-03‘SELECT @dt 
--结果: 2003-02-01 00:00:00.000 
 
--============================================================================== 
 
--=================================== 

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

--=================================== 
 
--以下示例演示了在不同的语言环境(SET LANGUAGE)下,DATENAMECONVERT函数的不同结果。 
USE master 
--设置会话的语言环境为: English 
SET LANGUAGE N‘English‘ 
SELECT DATENAME(Month,GETDATE())AS [Month], 
    DATENAME(Weekday,GETDATE())AS [Weekday], 
    CONVERT(varchar,GETDATE(),109)AS [CONVERT] 
/*-- 
结果: Month Weekday CONVERT  
------------- -------------- -------------------------------  
March Tuesday Mar 15 2005 8:59PM 
 --*/  
 --设置会话的语言环境为简体中文 
 SET LANGUAGE N简体中文‘ 
 SELECT DATENAME(Month,GETDATE())AS [Month], 
     DATENAME(Weekday,GETDATE())AS [Weekday], 
     CONVERT(varchar,GETDATE(),109)AS [CONVERT] 
/*--结果 Month Weekday CONVERT  
 ------------- --------------- ----------------------------------------- 
  05 星期四 05 19 2005 2:49:20:607PM  
--*/ 
   
  --======================================================================= 
   
  --================================== 

日期格式化处理.sql 

  --================================== 
 
DECLARE @dt datetime 
SET @dt=GETDATE() 
--1.短日期格式:yyyy-m-d 
SELECT REPLACE(CONVERT(varchar(10),@dt,120),N‘-0‘,‘-‘) 
--2.长日期格式:yyyymmdd 
--A. 方法
SELECT STUFF(STUFF(CONVERT(char(8),@dt,112),5,0,N‘),8,0,N‘)+N‘ 
--B. 方法
SELECT DATENAME(Year,@dt)+N‘ 
    +DATENAME(Month,@dt)+N‘ 
    +DATENAME(Day,@dt)+N‘  
--3.长日期格式:yyyymd 
SELECT DATENAME(Year,@dt)+N‘ 
    +CAST(DATEPART(Month,@dt)AS varchar)+N‘ 
    +DATENAME(Day,@dt)+N‘  
--4.完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm 
SELECT CONVERT(char(11),@dt,120)+CONVERT(char(12),@dt,114) 
 
--================================================================ 
 
--======================== 

日期推算处理.sql 

--======================== 
 
DECLARE @dt datetime 
SET @dt=GETDATE() 
DECLARE @number int 
SET @number=3  
--1.指定日期该年的第一天或最后一天 
--A. 年的第一天 
SELECT CONVERT(char(5),@dt,120)+‘1-1‘  
--B. 年的最后一天 
SELECT CONVERT(char(5),@dt,120)+‘12-31‘  
--2.指定日期所在季度的第一天或最后一天 
--A. 季度的第一天 
SELECT CONVERT(datetime,CONVERT(char(8), 
    DATEADD(Month,DATEPART(Quarter,@dt)*
    -Month(@dt)-2,@dt),120)+‘1‘) 
--B. 季度的最后一天(CASE判断法) 
SELECT CONVERT(datetime,CONVERT(char(8), 
    DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120) 
    +CASE WHEN DATEPART(Quarter,@dt)in(1,4)THEN ‘31‘ELSE ‘30‘ END) 
--C. 季度的最后一天(直接推算法) 
SELECT DATEADD(Day,-1,CONVERT(char(8), 
    DATEADD(Month,1+DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+‘1‘) 
--3.指定日期所在月份的第一天或最后一天 
--A. 月的第一天 
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+‘1‘) 
--B. 月的最后一天 
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+‘1‘) 
--C. 月的最后一天(容易使用的错误方法) 
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt)) 
--4.指定日期所在周的任意一天 
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt) 
--5.指定日期所在周的任意星期几 
--A. 星期天做为一周的第1 
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt) 

人气教程排行