La declaración SELECT INTO en SQL se usa generalmente para fines de copia masiva. Podríamos copiar todos los datos de una tabla a otra tabla usando un solo comando.
Nota:
Las consultas se ejecutan en SQL SERVER y es posible que no funcionen en muchos editores de SQL en línea, así que mejor use un editor fuera de línea.
Sintaxis:
SELECT column1, column2..... INTO TARGET_TABLE from SOURCE_TABLE
TARGET_TABLE debe tener el mismo esquema y tipos de datos que SOURCE_TABLE.
Primero creemos una tabla 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');
Identificación | Nombre | Correo electrónico | Departamento |
---|---|---|---|
1 | Jessie | jessie23@gmail.com | Desarrollo |
2 | Praveen | praveen_dagger@yahoo.com | HORA |
3 | Bisa | dragonball@gmail.com | Ventas |
4 | Ritvik | msvv@hotmail.com | ESO |
5 | Suraj | srjsunny@gmail.com | Seguro de calidad |
6 | Om | OmShukla@yahoo.com | ESO |
7 | naruto | uzumaki@konoha.com | Desarrollo |
Consulta-1: Para copiar todos los datos de GFG_Employee en la tabla backUpEmployee.
SELECT * INTO backUpEmployee from GFG_Employees;
Producción:
Select * from backUpEmployee;
Identificación | Nombre | Correo electrónico | Departamento |
---|---|---|---|
1 | Jessie | jessie23@gmail.com | Desarrollo |
2 | Praveen | praveen_dagger@yahoo.com | HORA |
3 | Bisa | dragonball@gmail.com | Ventas |
4 | Ritvik | msvv@hotmail.com | ESO |
5 | Suraj | srjsunny@gmail.com | Seguro de calidad |
6 | Om | OmShukla@yahoo.com | ESO |
7 | naruto | uzumaki@konoha.com | Desarrollo |
Consulta-2: use la cláusula ‘where’ para copiar solo algunas filas de GFG_Employees en la tabla backUp2.
SELECT * INTO backUp2 from GFG_Employees where department in ('Development', 'IT');
Producción:
Select * from backUp2;
Identificación | Nombre | Correo electrónico | Departamento |
---|---|---|---|
1 | Jessie | jessie23@gmail.com | Desarrollo |
4 | Ritvik | msvv@hotmail.com | ESO |
6 | Om | OmShukla@yahoo.com | ESO |
7 | naruto | uzumaki@konoha.com | Desarrollo |
Consulta-3: para copiar solo algunas columnas de GFG_Employees en la tabla backUp3, especifíquelas en la consulta.
SELECT id, name INTO backUp3 from GFG_Employees;
Producción:
Select * from backUp3;
Identificación | Nombre |
---|---|
1 | Jessie |
2 | Praveen |
3 | Bisa |
4 | Ritvik |
5 | Suraj |
6 | Om |
7 | naruto |
INSERT INTO SELECT vs SELECT INTO:
Ambas declaraciones podrían usarse para copiar datos de una tabla a otra. Pero INSERT INTO SELECT podría usarse solo si la tabla de destino existe, mientras que la declaración SELECT INTO podría usarse incluso si la tabla de destino no existe, ya que crea la tabla de destino si no existe.
INSERT INTO tempTable select * from GFG_Employees;
AQUÍ la tabla tempTable debe estar presente o creada de antemano, de lo contrario arrojará un error.
SELECT * INTO backUpTable from GFG_Employees;
Aquí no es necesario existir antes ya que SELECT INTO crea una tabla si la tabla no existe y luego copia los datos.