MSSQL教程之解读SQL Server2008的新语句MERGE
BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继SQLServer2008将包括用于兼并两个行集(rowset)数据的新句法。依据一个源数据表对另外一个数据表举行断定性的拔出、更新和删除如许庞大的操纵,使用新的MERGE语句,开辟者用一条命令就能够完成。对两个表举行信息同步时,有三步操纵要举行。起首要处置任何必要拔出方针数据表的新行。其次是处置必要更新的已存在的行。最初要删除不再利用的旧行。这个过程当中必要保护大批反复的逻辑,并大概招致奇妙的毛病。
BobBeauchemin会商了MERGE语句,这个语句将上述的多个操纵步骤兼并成单一语句。他给出了以下的例子:
以下为援用的内容:
merget
usingsont.id=s.id
whenmatchedthenupdatet.name=s.name,t.age=s.age--use"rowset1"
whennotmatchedtheninsertvalues(id,name,age)--use"rowset2"
whensourcenotmatchedthendelete;--use"rowset3"
如你所见,详细操纵是依据前面的团结(join)的剖析了局来断定的。在这个例子中,假如方针和源数据表有婚配的行,就实施更新操纵。假如没有,就实施拔出大概删除操纵来使方针数据表和源数据表坚持分歧。
这个新句法的一个美好的地方是它在处置更新时切实其实定性。在利用尺度的UPDATE句法和团结时,大概有凌驾一个源行跟方针行婚配。在这类情形下,没法意料更新操纵会接纳哪一个源行的数据。
而当利用MERGE句法时,假如存在多处婚配,它会抛出一个毛病。这就提示了开辟者,要到达料想的方针,以后的团结前提还不敷明白。
本文搜集收拾自互联网,若您是原文作者,请来信变动作者及出处Post#chinaz.com(把#改成@)
这里我们讨论用binlog来实现闪回的方案。 而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。 另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程); groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。 我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过! 从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。 比如日志传送、比如集群。。。 Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。 你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
页:
[1]