10第十章数据修改高级用法
MERGE OUPUT $action AS action (由这个动作来判断是inserted 还是 deleted)
WHEN MATCHED AND (源.列 <> 目.列) 才更新
WHEN NOT MATCHED BY SOURCE THEN DELETE (慎用)
WHEN NOT MATCHED THEN
INSERT VALUES
在 2008 之前 插入多条 需要写多个insert values 08 之后可以下载一起
@rowcount = @@ROWCOUNT
select into 将复制源表中数据类型为空性和 IDENTITY 属性,但并不会复制表的约束,索引和触发器,注意
多表中选择列 建表不会复制 identity 所以单表查询时,如果不希望向新表列中复制 IDENTITY 属性,可以入
CustomID + 0 AS CustomerID 加个 0 就不会复制了
还有不能使用 SELECT INTO 创建已经分区的表,即使源表已进行分区,SELECT INTO 也不会使用源表的分区方案,新表是在默认文件组中创建的。
BULK INSERT 属于批量导入,对于简单恢复模式或大容量日志恢复模式的数据库可以起到 减少日志记录
从而能快速导入 BULK
update 可用来更新远程服务器上的行 (使用链接服务器名称或OPENROWSET opendatasource,openquery 函数)
前提是用来访问远程服务器的 OLE DB 访问接口支持更新操作 。
P282 TRUNCATE TABLE
top /offset 10 rows fetch next 5 rows only
嵌套联接执行顺序由内到外,内部结果作为外部的输入
CROSS APPLY <=> INNER JOIN
outer apply <=> left outer join