SQL Server 2005学习笔记之数据修改心得

数据库 SQL Server
本文我们主要介绍了SQL Server 2005数据修改操作的一些心得,在此拿出来与大家分享,希望能够对您有所帮助。

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

例如:

  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>

 

关于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日志的简单步骤
责任编辑:赵鹏 来源: 博客园
相关推荐

2010-07-12 09:35:02

Sql server

2010-06-30 13:19:17

SQL Server

2010-07-09 11:06:13

SQL Server

2010-07-12 11:06:37

SQL Server2

2011-08-25 14:25:50

SQL Server修改字段属性

2010-07-20 17:47:12

2010-07-20 17:36:55

SQL Server

2010-07-06 15:22:00

SQL Server

2010-07-09 15:31:25

SQL Server

2011-04-06 13:04:35

SQL Server 密码修改

2011-08-19 15:13:36

SQL Server MDX查询

2011-08-11 14:23:57

SQL Server 索引分区

2010-06-30 10:15:40

SQL Server

2009-10-23 12:44:35

SQL SERVER

2011-08-25 14:38:14

SQL Server修改表结构字段类型

2010-07-23 12:55:29

SQL Server

2010-07-14 13:21:19

SQL Server

2011-08-16 09:48:27

SQLPLUS学习笔记SQL Buffer

2011-09-07 15:11:31

SQL Server同步

2011-08-01 09:09:07

SQL Server SQL Server 数据库
点赞
收藏

51CTO技术栈公众号