欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

SQL 学习笔记

程序员文章站 2022-04-20 18:27:09
...

SQL 指merge into关键字 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中

SQL 指merge into关键字

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

使用merge关键字的场景比如

  1. 数据同步
  2. 数据转换
  3. 基于源表对目标表做insert update delete操作

使用Merge关键字的好处

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

merge into [Employee] as E   //merge into是要修改的目标表
using Test_Employee as T  //using是源表
ON T.ID=E.ID
WHEN MATCHED THEN update set E.Name=T.Name // 如果存在匹配数据 ,就对目标表进行修改
WHEN NOT MATCHED THEN insert values(T.ID,T.Name,T.department,'','') // 如果不存在匹配数据 ,就进行插入
WHEN NOT MATCHED BY SOURCE THEN DELETE; //如果源表中不存在目标表中的数据,那么对目标表的中的不同步数据进行删除

SQL SELECT INTO 语法

SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。

SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

可以把所有的列插入新表:(new_table_name 可以是在数据库中不存在的表,如果不存在,那么使用这条语句之后,会在数据库中创建这个表)

SELECT *INTO new_table_name [IN externaldatabase] FROM old_tablename

或者只把希望的列插入新表:

SELECT column_name(s)INTO new_table_name [IN externaldatabase] FROM old_tablename

where11 语法

比如上面的select into语句中在对表进行备份存档的时候你可以选择存档的方式,一种是指存表的结构,另一种表的全部数据

SELECT *INTO new_table_name [IN externaldatabase] FROM old_tablename where 11(11 因为条件不为真,所以不会查询得到表的数据。表示只存旧表的结构)

SELECT *INTO new_table_name [IN externaldatabase] FROM old_tablename where 1=1(1=1 因为条件为真,所以会查询得到表的数据。表示存旧表的整个数据)