SQL Server2008中的MERGE SQL语句中的MERGE的全称是什麼?代表什麼意思? 有没有

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server2008中的MERGE SQL语句中的MERGE的全称是什麼?代表什麼意思? 有没有相关的知识,希望对你有一定的参考价值。

有没有关於SQL Server2008简介的课件?PPT格式

merge 是sqlserver2008的新语句
SQL Server 2008将包含用于合并两个行集(rowset)数据的新句法。根据一个源数据表对另一个数据表进行确定性的插入、更新和删除这样复杂的操作,运用新的MERGE语句,开发者用一条命令就可以完成。

对两个表进行信息同步时,有三步操作要进行。首先要处理任何需要插入目标数据表的新行。其次是处理需要更新的已存在的行。最后要删除不再使用的旧行。这个过程中需要维护大量重复的逻辑,并可能导致微妙的错误。

Bob Beauchemin讨论了MERGE语句,这个语句将上述的多个操作步骤合并成单一语句。他给出了如下的例子:

merge [target] t  
using [source] s on t.id = s.id  
when matched then update set t.name = s.name, t.age = s.age -- use "rowset1"  
when not matched then insert values(id,name,age) -- use "rowset2"  
when not matched  by source then delete; -- use "rowset3" 
如你所见,具体操作是根据后面的联合(join)的解析结果来确定的。在这个例子中,如果目标和源数据表有匹配的行,就实行更新操作。如果没有,就实行插入或者删除操作来使目标数据表和源数据表保持一致。

这个新句法的一个美妙之处是它在处理更新时的确定性。在使用标准的UPDATE句法和联合时,可能有超过一个源行跟目标行匹配。在这种情况下,无法预料更新操作会采用哪个源行的数据。

而当使用MERGE句法时,如果存在多处匹配,它会抛出一个错误。这就提醒了开发者,要达到预想的目标,当前的联合条件还不够明确。
至于 ppt 没有
有本pdf http://ishare.iask.sina.com.cn/f/16236919.html追问

有沒有免費的資料?

追答

这就是免费的呀 注册下就行

参考技术A MERGE 就是 合并的意思.
SQL Server 2008 新特性。
就是2表关联处理的时候, 可以有3种分支进行处理

一、源表有,目标表有 这种情况一般是 UPDATE 操作
二、源表有,目标表无 这种情况一般是 INSERT 操作
三、源表无,目标表有 这种情况一般是 DELETE 操作

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/36db5b17cf5fd02cdd5401ee.html

参考技术B merge 不是简称,全称也叫merge,是合并的意思。
顾名思义,就是将两个记录集合并到一起,并且可以进行插入、更新和删除这样复杂的操作。
参考技术C NEWSS 如果为空了,那个SS.ExpireDate这个方法就失效会出错,下面的语句就不会执行了
参考技术D NEWSS 如果为空了,那个SS.ExpireDate这个方法就失效会出错,下面的语句就不会执行了

sql server中的merge

http://www.cnblogs.com/CareySon/archive/2012/03/07/2383690.html

 

 

简介

    Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的。

    可以想象出,需要使用Merge的场景比如:

  •     数据同步
  •     数据转换
  •     基于源表对目标表做Insert,Update,Delete操作

 

使用Merge关键字的好处

    首先是更加短小精悍的语句,在SQL Server 2008之前没有Merge的时代,基于源表对目标表进行操作需要分别写好几条Insert,Update,Delete。而使用Merge,仅仅需要使用一条语句就好。下面我们来看一个例子。

    首先建立源表和目标表,并插入相关的数据,如图1所示。

  技术分享

     图1.创建测试表并插入测试数据

   

    下面我们来写一个简单的Merge语句,如图2所示。

     技术分享

     图2.一个简单的Merge语句

  

     所造成的结果如图3所示。

     技术分享

     图3.Merge语句对于目标表的更新

 

     最终目标表的结果如图4所示。

     技术分享

     图4.最后目标表的结果

 

    Merge语句还有一个强大的功能是通过OUTPUT子句,可以将刚刚做过变动的数据进行输出。我们在上面的Merge语句后加入OUTPUT子句,如图5所示。

    技术分享

    图5.Merge语句后加上OUTPUT子句

 

   此时Merge操作完成后,将所变动的语句进行输出,如图6所示。

   技术分享

   图6.输出Merge操作产生的数据变更

 

   当然了,上面的Merge关键字后面使用了多个WHEN…THEN语句,而这个语句是可选的.也可以仅仅新增或是仅仅删除,如图7所示。

   技术分享

    图7.仅仅插入的Merge语句

 

   我们还可以使用TOP关键字限制目标表被操作的行,如图8所示。在图2的语句基础上加上了TOP关键字,我们看到只有两行被更新。

   技术分享

    图8.使用TOP关键字的Merge语句

 

    但仅仅是MATCHED这种限制条件往往不能满足实际需求,我们可以在图7那个语句的基础上加上AND附加上额外的限制条件,如图9所示。

    技术分享

    图9.加上了AND限制条件的Merge语句

 

Merge关键字的一些限制

  •     使用Merge关键字只能更新一个表
  •     源表中不能有重复的记录

 

小结

    本文简单说明了Merge关键的字的使用。如果你使用的是SQL Server 2008之后的版本,在面对一些比如库存结账之类的业务时,放弃IF…ELSE和手写UPDATE,Insert吧,使用Merge关键字可以使这类操作更加轻松愉悦。

以上是关于SQL Server2008中的MERGE SQL语句中的MERGE的全称是什麼?代表什麼意思? 有没有的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server2008中的MERGE SQL语句中的MERGE的全称是什麼?代表什麼意思? 有没有

Sql Server 2008 MERGE - 获取计数的最佳方式

sql server中的merge

sql server 2008 merge matched判定条件

sql server 2008中“Merge”子句的性能如何?

SQL Server中的Merge Into