Home  >  Article  >  Database  >  SQL 学习笔记

SQL 学习笔记

WBOY
WBOYOriginal
2016-06-07 15:08:171111browse

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] <span style="color: #0000ff;">as</span><span style="color: #000000;"> E   //merge into是要修改的目标表
</span><span style="color: #0000ff;">using</span> Test_Employee <span style="color: #0000ff;">as</span><span style="color: #000000;"> T  //using是源表
ON T.ID</span>=<span style="color: #000000;">E.ID
WHEN MATCHED THEN update </span><span style="color: #0000ff;">set</span> E.Name=<span style="color: #000000;">T.Name // 如果存在匹配数据 ,就对目标表进行修改
WHEN NOT MATCHED THEN insert values(T.ID,T.Name,T.department,</span><span style="color: #800000;">''</span>,<span style="color: #800000;">''</span><span style="color: #000000;">) </span>// 如果不存在匹配数据 ,就进行插入<br><span style="line-height: 1.5;">WHEN NOT MATCHED BY SOURCE THEN DELETE;    //如果源表中不存在目标表中的数据,那么对目标表的中的不同步数据进行删除 </span>

 

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  因为条件为真,所以会查询得到表的数据。表示存旧表的整个数据)

 

    

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn