Curso
Syntax
A continuación se muestra el caso de uso normal de "INSERT INTO", en el que insertas valores manualmente. Le sigue el nombre de la tabla y una lista opcional de columnas que deben rellenarse con los datos. Luego sigue la palabra clave "VALORES" y los valores reales que quieras insertar.
INSERT INTO table_name (column_a, column_b)
VALUES ("value_a", "value_b");
INSERTAR REGISTROS DISTINTOS EN NUEVAS TABLAS
Para copiar datos de una tabla existente a una nueva, puedes utilizar el patrón "INSERT INTO SELECT DISTINCT". Después de "INSERT INTO", especifica el nombre de la tabla de destino: organizations en el caso siguiente.
A continuación, selecciona las columnas que deben copiarse de la tabla de origen: unviversity_professors en este caso. Utiliza la palabra clave "DISTINTO" para copiar sólo organizaciones distintas.
INSERT INTO organizations
SELECT DISTINCT organization,
organization_sector
FROM university_professors;
Output: INSERT 0 1287
La salida anterior muestra que sólo se insertan 1287 registros en la tabla "organizaciones".
Por otra parte, si utilizas "INSERT INTO SELECT", sin la palabra clave "DISTINCT", también se copiarían los registros duplicados.
INSERT INTO organizations
SELECT organization,
organization_sector
FROM university_professors;
Output: INSERT 0 1377
Migrar datos a una nueva tabla
Vamos a migrar los datos a nuevas tablas. Utilizarás el siguiente patrón:
INSERT INTO ...
SELECT DISTINCT ...
FROM ...;
Se puede dividir en dos partes:
Primera parte:
SELECT DISTINCT column_name1, column_name2, ...
FROM table_a;
Esto selecciona todos los valores distintos de la tabla table_a - nada nuevo para ti.
-- Insert unique professors into the new table
INSERT INTO professors
SELECT DISTINCT firstname, lastname, university_shortname
FROM university_professors;
-- Doublecheck the contents of professors
SELECT *
FROM professors;
Segunda parte:
INSERT INTO table_b ...;
Toma esta parte y añádela a la primera, de modo que inserte todas las filas distintas de table_a en table_b.
Una última cosa: Es importante que ejecutes todo el código a la vez una vez que hayas rellenado los espacios en blanco.
-- Insert unique affiliations into the new table
INSERT INTO affiliations
SELECT DISTINCT firstname, lastname, function, organization
FROM university_professors;
-- Doublecheck the contents of affiliations
SELECT *
FROM affiliations;
Para saber más sobre las bases de datos relacionales en SQL, consulta este vídeo de nuestro curso Introducción a las bases de datos relacionales en SQL.
Este contenido está tomado del curso Introducción a las bases de datos relacionales en SQL de DataCamp, impartido por Timo Grossenbacher.

