设置内存选项
--========================
-- 设置 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语句大全完整版的详细内容...