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 | 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 | 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 | 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 创建表然后复制数据。