/**************************** 表操作 *******************************/
创建表:
CREATE table [表名]
(
[自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,
[字段1] nVarChar(50) default '默认值' null ,
[字段2] ntext null ,
[字段3] datetime,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] image null ,
)
删除表:
Drop table [表名]
插入数据:
INSERT INTO [表名] (字段1,字段2) VALUES (100,'51WINDOWS.NET')
删除数据:
DELETE FROM [表名] WHERE [字段名]>100
TRUNCATE: 删除整表数据但保留结构
更新数据:
UPDATE [表名] SET [字段1] = 200,[字段2] = '51WINDOWS.NET' WHERE [字段三] = 'HAIWA'
新增字段:
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL
删除字段:
ALTER TABLE [表名] DROP COLUMN [字段名]
修改字段:
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL
重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表)
sp_rename '表名', '新表名', 'OBJECT'
新建约束:
ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= '2000-1-1')
删除约束:
ALTER TABLE [表名] DROP CONSTRAINT 约束名
新建默认值
ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT '51WINDOWS.NET' FOR [字段名]
例:ALTER TABLE tbl_RequestGood_Master ADD CONSTRAINT DF_tbl_RequestGood_Master_Cash DEFAULT 0 FOR [Cash]
删除默认值
ALTER TABLE [表名] DROP CONSTRAINT 默认值名
例:ALTER TABLE [tbl_RequestGood_Master] DROP CONSTRAINT DF_tbl_RequestGood_Master_Cash
删除Sql Server 中的日志,减小数据库文件大小:
DUMP transaction [数据库名] with no_log
BACKUP log [数据库名] with no_log
DBCC shrinkdatabase(数据库名)
EXEC sp_dboption '数据库名', 'autoshrink', 'true'
修改自增列:
ALTER table [表名]
DROP column ID
ALTER table [表名]
ADD ID int identity(1,1)
创建索引:
CREATE INDEX 索引名 ON [表名](字段名)
/**************************** 操作时间 ******************************/
SELECT
GetDate(),
Datepart(yy,GetDate()) as '年',
Datepart(mm,GetDate()) as '月',
Datepart(qq,GetDate()) as '季度',
Datepart(dy,GetDate()) as '每年的某一日',
Datepart(dd,GetDate()) as '日期',
Datepart(wk,GetDate()) as '每年的第几个星期',
Datepart(dw,GetDate()) as '一星期中第几个工作日',
Datepart(hh,GetDate()) as '小时',
Datepart(mi,GetDate()) as '分钟',
Datepart(ss,GetDate()) as '秒',
Datepart(ms,GetDate()) as '毫秒'
计算一个月第一天:
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
哪一天是本周的星期一:
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
一年的第一天:
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
季度的第一天:
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
当天的半夜:
SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
上月的最后一天:
SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0))
本月的最后一天:
SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, getdate())+1, 0))
去年的最后一天:
SELECT DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0))
本年的最后一天:
SELECT DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, getdate())+1, 0))
本月的第一个星期一:
SELECT DATEADD(wk, DATEDIFF(wk, 0, DATEADD(dd, 6-datepart(DAY, getdate()), getdate())), 0)
去掉时分秒:
DECLARE @ datetime
SET @ = getdate() --'2003-7-1 10:00:00'
SELECT @,DATEADD(DAY, DATEDIFF(DAY,0,@), 0)
显示星期几:
select datename(weekday,getdate())
取得某个月的天数:
DECLARE @m int
SET @m=2 --月份
SELECT DATEDIFF(DAY,'2003-'+CAST(@m as varchar)+'-15','2003-'+CAST(@m+1 as varchar)+'-15')
取得本月天数,方法一:
SELECT DATEDIFF(DAY,CAST(month(GetDate()) as varchar)+'-'+CAST(month(GetDate()) as varchar)+'-15',CAST(month(GetDate()) as varchar)+'-'+CAST(month(GetDate())+1 as varchar)+'-15')
取得本月天数,方法二:
SELECT DAY(DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)))
判断是否闰年,方法一:
SELECT CASE DAY(DATEADD(mm, 2, DATEADD(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then '平年' else '闰年' end
判断是否闰年,方法二:
SELECT CASE DATEDIFF(DAY,datename(year,getdate())+'-02-01',DATEADD(mm,1,datename(year,getdate())+'-02-01')) when 28 then '平年' else '闰年' end
一个季度多少天:
DECLARE @m tinyint,@time smalldatetime
SELECT @m=month(getdate())
SELECT @m = convert(int, (@m - 1) / 3) * 3 + 1
SELECT @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
SELECT DATEDIFF(DAY,@time,DATEADD(mm,3,@time))
/**************************** SQL性能 ******************************/
查看SQL语句耗时:
SET STATISTICS io ON
SET STATISTICS time ON
GO
select * from [表名]
临时表取代游标:
DECLARE @TempTable table ([ID] bigint not null)
DECLARE @Is_End bit
DECLARE @ID bigint
insert into @TempTable([ID]) (select ID from [表名])
SET @Is_End = 1
while(@Is_End = 1)
begin
SET @ID = 0
select top 1 @ID = isnull(ID,0) from @TempTable
if(@ID = 0)
begin
SET @Is_End = 0
end
else
begin
-- 计算
delete from @TempTable where ID = @ID
end
end