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

sql 随笔

Posted on 2009-08-03 17:19  叉狼  阅读(153)  评论(0)    收藏  举报
Truncate与Delete的区别

    trancate与delete都是删除数据,不同的是trancate是将表的所有数据都删除,而delete可以有选择地删除数据;

    delete删除数据是记录在日志中的,可以通过其将数据恢复,而trancate则是将整个表截断,其操作是不记录在日志里的。这就像操作系统里面delete文件还可以在回收桶里找到,而按shift+delete就是彻底地删除文件。相对来说,trancate速度快些。

    表在录入数据以后会占用一定的系统磁盘空间,用delete命令并不是将数据的占有空间收回,而是保留一段时间,就是说可以利用日志恢复数据;而trancate则是将表所有的空间收回到系统中,这是两者最根本的区别。

   

DateAdd,DateDiff,DateName函数
 

dateadd (datepart,amount,initialdate)函数

返回一个对指定日期加上日期部分的完整日期数值,类型为datetime。

例如:print dateadd(m,3,getdate()),当前系统时间加上3(月)

 

 

datediff(datepart,startdate,enddate)函数

根据datepart,返回一个enddate减去startdate的值(相减的可能是year,month,day。。。)

 

datename(datepart,date)函数

返回日期指定日期部分的数值

例如:select datename(m,getdate()),当前日期的月份

附表:

datepart参数格式

日期部分                  缩写

year                      yy,yyyy

quarter                   qq,q

month                     mm,m

day                       dd,d

dayofyear                 dy,y

week                      wk,ww

weekday                   dw

hour                      hh

minute                    mi,n

second                    ss,s

Millisecond               ms


     

创建带有通配符参数的简单存储过程
 

创建存储过程

use AdventureWorks

GO

create proc getEmployeeName @EmployeeName vachar(50)='%'

as

begin

select * from Employees

where EmployeeName like @EmployeeName

end

 

运行存储过程

use AdventureWorks

GO

exec getEmployeeName 'xlang%'

GO