SQLServer2005学习笔记之数据修改心得

SQL Server 2005数据库操作中,数据修改操作是我们经常要使用的,因此是必须要掌握的。以前为了动态返回sp或批处理的结果,做为下一步处理的中继数据,总是使用临时表和openQuery来实现。有时还实现不了,比如需要指定参数的sp.其实有INSERT EXEC很好解决我的这些困扰。Insert Exec 语句可以把存储过程或动态批处理返回的结果集直接保存到现有表中:INSERT INTO EXEC { | ()};

碌曲ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

例如:

 
 
 
  1. INSERT INTO DBO.Result  
  2. EXEC DBO.USP_MYSP @Parm1='A',@Parm2='B' 

 

删除数据只知道TRUNCATE和无WHERE DELETE区别。TRUNCATE日志最小化不触发TRIGGER,所以要比日志全记录的无WHERE DELETE要快。删除大量数据的操作,肯定要指定WHERE的,能做的就是写好语句,等着执行完毕。在执行过程会发生日志暴涨,锁升级等状况却没有考虑到。

假设MYTB是***的表,要删除其中几百万行,老办法会执行很久必然会有阻塞发生。可以用如下方法:

 
 
 
  1. WHILE 11=1  
  2.  Begin  
  3.    Delete TOP(5000) From dbo.MYTB  
  4.    Where myCol='del';  
  5.    IF @@ROWCOUNT<5000 
  6.     BREAK;  
  7.  End 

 

这样第次删除5000行,当删除到***一批数据,不足5000行就跳出。锁升级的可能大大降低。移除重复性数据,这是一个老话题了,针对行重复、部分列重复,无非就是DISTINCT,主键,临时表之类的处理方法,在SQL2005里新引入的CTE和ROW_NUMBER函数可以提供一个清晰和清新的解决方法:

假设MYTB没有主键列,有部分重复数据需要删除,则可以:

 
 
 
  1. WITH DUPS AS  
  2.  (  
  3.    SELECT *,ROW_NUMBER() OVER (ORDER BY COL1,COL2,COL3) AS RN  
  4.    FROM DBO.MYTB  
  5. )  
  6. DELETE FROM DUPS WHERE RN>1 

 

关于SQL Server 2005数据修改的心得就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. SQL Server 2008 MDX学习笔记之理解元数组
  2. SQL Server数据库DataRelation的应用示例详解
  3. SQL Server 2005/2008中的CTE应用之递归查询
  4. SQL Server 2008数据库学习笔记之MDX查询示例
  5. 浅析SQL Server数据库SSIS导入IIS日志的简单步骤

文章标题:SQLServer2005学习笔记之数据修改心得
文章地址:http://www.mswzjz.com/qtweb/news16/172516.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联