博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server 常用技巧

Posted on 2011-08-10 08:56  随遇  阅读(277)  评论(0)    收藏  举报
在实际做项目中,经常用到的几个Sql Server语句,来总结一下。

1.Sql Server代码备份数据库

declare @databasename nvarchar(20)   
declare @filename nvarchar(100)    
set @databasename=’WorkProject’ –数据库名字   
set @filename=’D:\’+@databasename+convert(nvarchar(10),getdate(),112)+’.bak’  –备份数据库存放文件的目录和文件名   

BACKUP DATABASE @databasename TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N’备份’, NOSKIP , STATS = 10, NOFORMAT  

可以将这段代码加到Sql Server作业当中,实现自动备份数据库。

2.日期转换成字符串

Select convert(varchar(10),getdate(),120) 结果:2011-08-09

Select convert(varchar(16),getdate(),120) 结果:2011-08-09 15:56

在判断某天到某天的时候用到。

3.Sql Server时间算法

SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,getdate()),0AS ’所在月的第一天’    

 

  
SELECT DATEADD(MONTH,1+DATEDIFF(MONTH,0,getdate()),0)-1 AS ’所在月的最一天’    
  
SELECT DATEADD(WEEKDAY,1-DATEPART(WEEKDAY,getdate()),getdate()) AS ’所在星期的第一天,星期日’    
  
SELECT DATEADD(DAY,2-DATEPART(WEEKDAY,getdate()),getdate()) AS ’所在星期的第二天,星期一’    
  
SELECT DATEADD(DAY,8-DATEPART(WEEKDAY,getdate()),getdate()) AS ’所在星期的最后一天’    
  
SELECT CASE DATEDIFF(DAY,DATEADD(YEAR,DATEDIFF(YEAR,0,getdate()),0),DATEADD(YEAR,1+DATEDIFF(YEAR,0,getdate()),0)) WHEN 365 THEN ’平年’ ELSE ’闰年’ END  是否为闰年  

 

 

.自增列重新从1开始

truncate table 你的表名

会删除所有数据,自增列重新从1开始

5.出现数据项的序号

Select ROW_NUMBER() OVER(Order By User_Id) as row,* From t_User

有了序号以后,可以对序号进行处理,主要用到分页当中。

6.根据其他表数据来批量更新数据。

Update 表名1 set a.WoUs_Score=b.Num1 from 表名1 as a join 表明2 As b on a.WoUs_Id=b.Num

主要用到对数据的批量更新上。

7.批量插入数据

insert into 表名(字段1,字段2) Select 字段1,字段2 From 表名2

8.对所取的字段进行判断

  
Select Case When 字段1>0 then 1 else case when 字段2==0 then 0 else -1 end  end From 表名   Case When 语句可以嵌套   
  
Select IsNull(字段1,0From 表名 如果字段为Null,则显示0 
Select Case When 字段1>0 then 1 else 0 end From 表名    

9.Sql Server事务处理

begin Transaction T  –开始事务   
  
 –执行业务   
    
IF @@error <> 0  –@@error==0表示执行成功,其他表示执行失败   
     
Begin  
       
RollBack Transaction T –回滚业务   
     
End  
  
Else  
     
Begin  
       
COMMIT Transaction T –提交业务   

     end  

10.当数据库日志文件非常大时,需要截断日志。

BACKUP LOG 数据库名 WITH NO_LOG

然后再收缩文件和数据库。

这只是第一部分,以后还会再发上来一些Sql Serve实用技巧,敬请关注。

本文标题:Sql Serve实用技巧

本文链接: http://www.zlblogs.com/sqlserver-statement-1.html