好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SQL Server 2008语句大全完整版

设置内存选项  

--======================== 
 
-- 设置  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‘ 
    ), 
     -- 次要数据文件 2 
    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 0.000‘ 
INSERT @t  SELECT  ‘1900-1-1 0.001‘ 
INSERT @t  SELECT  ‘1900-1-1 0.009‘ 
INSERT @t  SELECT  ‘1900-1-1 0.002‘ 
INSERT @t  SELECT  ‘1900-1-1 0.003‘ 
INSERT @t  SELECT  ‘1900-1-1 0.004‘ 
INSERT @t  SELECT  ‘1900-1-1 0.005‘ 
INSERT @t  SELECT  ‘1900-1-1 0.006‘ 
INSERT @t  SELECT  ‘1900-1-1 0.007‘ 
INSERT @t  SELECT  ‘1900-1-1 0.008‘ 
SELECT  date, 转换后的日期 =CAST( date  as  datetime) 
     FROM @t  
/*-- 结果  date  转换后的日期   
--------------------- --------------------------  
1900-1-1 0.000  
1900-01-01 0.000  
1900-1-1 0.001  
1900-01-01 0.000  
1900-1-1 0.009  
1900-01-01 0.010  
1900-1-1 0.002  
1900-01-01 0.003  
1900-1-1 0.003  
1900-01-01 0.003  
1900-1-1 0.004  
1900-01-01 0.003  
1900-1-1 0.005  
1900-01-01 0.007  
1900-1-1 0.006  
1900-01-01 0.007  
1900-1-1 0.007  
1900-01-01 0.007  
1900-1-1 0.008  
1900-01-01 0.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 0.000 
--2. Style=101 时 , 表示日期字符串为 :dd/mm/yyyy 格式  
SELECT CONVERT( datetime, ‘11/1/2003‘, 103) 
-- 结果 :2003-01-11 0.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 把字符型日期转换为日期的处理也具有影响   
但不影响明确指定了 style 的 CONVERT 处理。   
--*/  
-- 示例   ,在下面的示例中,第一个 CONVERT 转换未指定 style ,转换的结果受 SET DATAFORMAT 的  
-- 影响,第二个 CONVERT 转换指定了 style ,转换结果受 style 的影响。  
-- 设置输入日期顺序为   日 / 月 / 年  
SET DATEFORMAT DMY 
-- 不指定 Style 参数的 CONVERT 转换将受到 SET DATEFORMAT 的影响  
SELECT CONVERT( datetime, ‘2-1-2005‘) 
-- 结果 : 2005-01-02 0.000 
-- 指定 Style 参数的 CONVERT 转换不受 SET DATEFORMAT 的影响  
SELECT CONVERT( datetime, ‘2-1-2005‘, 101) 
-- 结果 : 2005-02-01 0.000GO  
--2. 
/*-- 
说明   如果输入的日期包含了世纪部分,则对日期进行解释处理时   
年份的解释不受 SET DATEFORMAT 设置的影响。   
--*/  
-- 示例,在下面的代码中,同样的 SET DATEFORMAT 设置,输入日期的世纪部分与不输入日期的  
-- 世纪部分,解释的日期结果不同。  
DECLARE @dt  datetime  
-- 设置 SET DATEFORMAT 为 : 月日年  
SET DATEFORMAT MDY 
-- 输入的日期中指定世纪部分  
SET @dt= ‘01-2002-03‘ SELECT @dt 
-- 结果 : 2002-01-03 0.000 
-- 输入的日期中不指定世纪部分  
SET @dt= ‘01-02-03‘ SELECT @dt 
-- 结果 : 2003-01-02 0.000GO  
--3. 
/*-- 
说明   如果输入的日期不包含日期分隔符,那么 SQL Server 在对日期进行解释时   
将忽略 SET DATEFORMAT 的设置。   
--*/  
-- 示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的 SET DATEFORMAT 设置下,  
-- 其解释的结果是一样的。  
DECLARE @dt  datetime  
-- 设置 SET DATEFORMAT 为 : 月日年  
SET DATEFORMAT MDY 
SET @dt= ‘010203‘ SELECT @dt 
-- 结果 : 2001-02-03 0.000 
-- 设置 SET DATEFORMAT 为 : 日月年  
SET DATEFORMAT DMY 
SET @dt= ‘010203‘ SELECT @dt 
-- 结果 : 2001-02-03 0.000 
-- 输入的日期中包含日期分隔符  
SET @dt= ‘01-02-03‘ SELECT @dt 
-- 结果 : 2003-02-01 0.000 
 
--============================================================================== 
 
--=================================== 

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

--=================================== 
 
-- 以下示例演示了在不同的语言环境 (SET LANGUAGE) 下, DATENAME 与 CONVERT 函数的不同结果。  
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 .长日期格式: yyyy 年 mm 月 dd 日  
--A.  方法 1 
SELECT STUFF(STUFF(CONVERT( char( 8),@dt, 112), 5, 0,N ‘ 年 ‘), 8, 0,N ‘ 月 ‘)+N ‘ 日 ‘ 
--B.  方法 2 
SELECT DATENAME(Year,@dt)+N ‘ 年 ‘ 
    +DATENAME(Month,@dt)+N ‘ 月 ‘ 
    +DATENAME(Day,@dt)+N ‘ 日 ‘  
--3 .长日期格式: yyyy 年 m 月 d 日  
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)* 3 
    -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) 
查看更多关于SQL Server 2008语句大全完整版的详细内容...

  阅读:34次