仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1151|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之解读SQL Server2008的新语句MERGE

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:17:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继SQLServer2008将包括用于兼并两个行集(rowset)数据的新句法。依据一个源数据表对另外一个数据表举行断定性的拔出、更新和删除如许庞大的操纵,使用新的MERGE语句,开辟者用一条命令就能够完成。
对两个表举行信息同步时,有三步操纵要举行。起首要处置任何必要拔出方针数据表的新行。其次是处置必要更新的已存在的行。最初要删除不再利用的旧行。这个过程当中必要保护大批反复的逻辑,并大概招致奇妙的毛病。
BobBeauchemin会商了MERGE语句,这个语句将上述的多个操纵步骤兼并成单一语句。他给出了以下的例子:
以下为援用的内容:
merge[target]t
using[source]sont.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来实现闪回的方案。
老尸 该用户已被删除
沙发
发表于 2015-1-19 06:52:16 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-28 05:27:00 | 只看该作者
另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
小女巫 该用户已被删除
地板
发表于 2015-2-5 17:11:46 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
谁可相欹 该用户已被删除
5#
发表于 2015-2-13 03:16:45 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
再现理想 该用户已被删除
6#
发表于 2015-3-3 13:25:48 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
柔情似水 该用户已被删除
7#
发表于 2015-3-11 11:26:38 | 只看该作者
比如日志传送、比如集群。。。
不帅 该用户已被删除
8#
发表于 2015-3-18 14:44:55 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
飘灵儿 该用户已被删除
9#
发表于 2015-3-26 06:21:26 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表