Corso
Sintassi
Di seguito trovi il caso d'uso normale di "INSERT INTO", in cui inserisci manualmente i valori. È seguito dal nome della tabella e da un elenco opzionale di colonne da riempire con i dati. Poi segue la parola chiave "VALUES" e i valori effettivi che vuoi inserire.
INSERT INTO table_name (column_a, column_b)
VALUES ("value_a", "value_b");
INSERT DISTINCT dei record in nuove tabelle
Per copiare i dati da una tabella esistente a una nuova, puoi usare il modello "INSERT INTO SELECT DISTINCT". Dopo "INSERT INTO", specifichi il nome della tabella di destinazione - organizations nel caso seguente.
Poi selezioni le colonne da copiare dalla tabella sorgente – in questo caso unviversity_professors. Usi la parola chiave "DISTINCT" per copiare solo le organizzazioni univoche.
INSERT INTO organizations
SELECT DISTINCT organization,
organization_sector
FROM university_professors;
Output: INSERT 0 1287
L'output sopra mostra che solo 1287 record sono stati inseriti nella tabella "organizations".
Se invece usi "INSERT INTO SELECT" senza la parola chiave "DISTINCT", verrebbero copiati anche i record duplicati.
INSERT INTO organizations
SELECT organization,
organization_sector
FROM university_professors;
Output: INSERT 0 1377
Migrazione dei dati in una nuova tabella
Ora migriamo i dati in nuove tabelle. Userai il seguente modello:
INSERT INTO ...
SELECT DISTINCT ...
FROM ...;
Può essere suddiviso in due parti:
Prima parte:
SELECT DISTINCT column_name1, column_name2, ...
FROM table_a;
Questo seleziona tutti i valori univoci nella tabella table_a – niente di nuovo per te.
-- 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;
Seconda parte:
INSERT INTO table_b ...;
Prendi questa parte e aggiungila alla prima, così da inserire tutte le righe distinte da table_a in table_b.
Un'ultima cosa: è importante eseguire tutto il codice nello stesso momento una volta che hai compilato gli spazi vuoti.
-- 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;
Per saperne di più sui database relazionali in SQL, guarda questo video del nostro corso Introduzione ai database relazionali in SQL.
Questo contenuto è tratto dal corso Introduzione ai database relazionali in SQL di Timo Grossenbacher su DataCamp.

