📜  SQL 中的 SELECT INTO 语句

📅  最后修改于: 2021-09-09 10:54:21             🧑  作者: Mango

SQL 中的 SELECT INTO语句通常用于批量复制目的。我们可以使用单个命令将整个数据从一个表复制到另一个表中。

笔记:
查询在 SQL SERVER 中执行,它们可能无法在许多在线 SQL 编辑器中工作,因此最好使用离线编辑器。

句法:

SELECT column1, column2..... INTO TARGET_TABLE from SOURCE_TABLE 

TARGET_TABLE 应具有与 SOURCE_TABLE 相同的架构和数据类型。

让我们首先创建一个表 GFG_Employees:

create table GFG_Employees 
 (
  id int,
  name varchar(20),
  email varchar(max),
  department varchar(20)
 ) ;

insert into GFG_EMPLOyees values(1, 'Jessie', 'jessie23@gmail.com', 'Development'); 
insert into GFG_EMPLOyees values(2, 'Praveen', 'praveen_dagger@yahoo.com', 'HR');
insert into GFG_EMPLOyees values(3, 'Bisa', 'dragonBall@gmail.com', 'Sales'); 
insert into GFG_EMPLOyees values(4, 'Rithvik', 'msvv@hotmail.com', 'IT'); 
insert into GFG_EMPLOyees values(5, 'Suraj', 'srjsunny@gmail.com', 'Quality Assurance');
insert into GFG_EMPLOyees values(6, 'Om', 'OmShukla@yahoo.com', 'IT');
insert into GFG_EMPLOyees values(7, 'Naruto', 'uzumaki@konoha.com', 'Development'); 

Id Name Email Department
1 Jessie jessie23@gmail.com Development
2 Praveen praveen_dagger@yahoo.com HR
3 Bisa dragonBall@gmail.com Sales
4 Rithvik msvv@hotmail.com IT
5 Suraj srjsunny@gmail.com Quality Assurance
6 Om OmShukla@yahoo.com IT
7 Naruto uzumaki@konoha.com Development

查询 1:将 GFG_Employees 中的所有数据复制到 backUpEmployee 表中。

SELECT * INTO backUpEmployee from GFG_Employees; 

输出:

Select * from backUpEmployee;

Id Name Email Department
1 Jessie jessie23@gmail.com Development
2 Praveen praveen_dagger@yahoo.com HR
3 Bisa dragonBall@gmail.com Sales
4 Rithvik msvv@hotmail.com IT
5 Suraj srjsunny@gmail.com Quality Assurance
6 Om OmShukla@yahoo.com IT
7 Naruto uzumaki@konoha.com Development

查询 2:使用 ‘where’ 子句仅将 GFG_Employees 中的某些行复制到 backUp2 表中。

SELECT * INTO backUp2 from GFG_Employees where department in ('Development', 'IT'); 

输出:

Select * from backUp2; 

Id Name Email Department
1 Jessie jessie23@gmail.com Development
4 Rithvik msvv@hotmail.com IT
6 Om OmShukla@yahoo.com IT
7 Naruto uzumaki@konoha.com Development

查询 3:要仅将 GFG_Employees 中的某些列复制到 backUp3 表中,请在查询中指定它们。

SELECT id, name INTO backUp3 from GFG_Employees; 

输出:

Select * from backUp3; 

Id Name
1 Jessie
2 Praveen
3 Bisa
4 Rithvik
5 Suraj
6 Om
7 Naruto

INSERT INTO SELECT vs SELECT INTO:
这两个语句都可用于将数据从一个表复制到另一个表。但是 INSERT INTO SELECT 只能在目标表存在的情况下使用,而即使目标表不存在也可以使用 SELECT INTO 语句,因为如果目标表不存在,它会创建目标表。

INSERT INTO tempTable select * from GFG_Employees; 

HERE 表 tempTable 应该存在或预先创建,否则会引发错误。

SELECT * INTO backUpTable from GFG_Employees;

这里不需要之前存在,因为如果表不存在,则 SELECT INTO 创建表然后复制数据。