Cursus
Syntaxis
Hieronder zie je het normale gebruik van "INSERT INTO" – waarbij je waarden handmatig invoert. Het wordt gevolgd door de tabelnaam en een optionele lijst met kolommen die je met de gegevens wilt vullen. Daarna komt het sleutelwoord "VALUES" en de daadwerkelijke waarden die je wilt invoegen.
INSERT INTO table_name (column_a, column_b)
VALUES ("value_a", "value_b");
INSERT DISTINCT-records IN nieuwe tabellen
Om gegevens van een bestaande tabel naar een nieuwe te kopiëren, kun je het patroon "INSERT INTO SELECT DISTINCT" gebruiken. Na "INSERT INTO" geef je de naam van de doeltabel op – in onderstaand geval organizations.
Vervolgens selecteer je de kolommen die moeten worden overgenomen uit de brontabel – in dit geval unviversity_professors. Met het sleutelwoord "DISTINCT" kopieer je alleen unieke organisaties.
INSERT INTO organizations
SELECT DISTINCT organization,
organization_sector
FROM university_professors;
Output: INSERT 0 1287
De bovenstaande output laat zien dat er slechts 1287 records zijn ingevoegd in de tabel "organizations".
Gebruik je daarentegen "INSERT INTO SELECT" zonder het sleutelwoord "DISTINCT", dan worden ook dubbele records overgenomen.
INSERT INTO organizations
SELECT organization,
organization_sector
FROM university_professors;
Output: INSERT 0 1377
Gegevens migreren naar een nieuwe tabel
Laten we de gegevens naar nieuwe tabellen migreren. Je gebruikt het volgende patroon:
INSERT INTO ...
SELECT DISTINCT ...
FROM ...;
Dat kun je opdelen in twee delen:
Eerste deel:
SELECT DISTINCT column_name1, column_name2, ...
FROM table_a;
Dit selecteert alle unieke waarden in tabel table_a – niets nieuws voor jou.
-- 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;
Tweede deel:
INSERT INTO table_b ...;
Neem dit deel en voeg het toe aan het eerste, zodat alle unieke rijen uit table_a in table_b worden ingevoegd.
Nog één ding: Het is belangrijk dat je alle code in één keer uitvoert zodra je de lege plekken hebt ingevuld.
-- 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;
Wil je meer leren over relationele databases in SQL? Bekijk dan deze video uit onze cursus Introduction to Relational Databases in SQL.
Deze content is afkomstig uit DataCamp’s cursus Introduction to Relational Databases in SQL door Timo Grossenbacher.
