常用SQL语句

/**************************** 表操作 *******************************/
创建表:
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值