SQL Basis

Hoofdstuk 15 - Inserting Data

  • Een insert kan op drie manieren:
    1. Insert één volledige rij
    2. Insert één ONvolledige rij
    3. Insert het resultaat van een query
  • Wanneer je 1 rij toevoegt aan een tabel geef dan altijd de kolomnamen op
  • Zorg ervoor dat de primaire sleutel uniek is
  • Zorg ervoor dat je net zoveel kolommen hebt als de tabel heeft

  • Onderstaande Insert voegt 1 rij toe aan de tabel Customers
INSERT INTO Customers ( cust_id,
                        cust_name,
                        cust_address,
                        cust_city,
                        cust_state,
                        cust_zip,
                        cust_country,
                        cust_contact,
                        cust_email
                        )
VALUES ( 1000000006,
         'Toy Land',
         '123 Any Street',
         'New York',
         'NY',
         '11111',
         'USA',
         NULL,
         NULL );
  • Wanneer kolomnamen worden opgegeven bij een INSERT is het mogelijk om een deel van een rij toe te voegen
  • Een onvolledige rij toevoegen kan alleen als dat bij het ontwerp van de tabel is toegestaan
  • Als een kolom 'NULL' kan zijn of er wordt een standaard waarde ingevuld dan kan hij bij een INSERT overgeslagen worden

INSERT INTO Customers ( cust_id,
                        cust_name,
                        cust_country
                        )
VALUES ( 1000000007,
         'ToysRUs',
         'USA'
       );
  • Als tegenhanger van het toevoegen van een rij is het ook mogelijk om veel rijen in een keer toe te voegen
  • Meerdere rijen toevoegen kan met een INSERT statement gecombineerd met een SELECT clausule
  • Bij een INSERT SELECT wordt het resultaat van een query gebruikt als invoer bij de INSERT
  • De kolomnamen van de SELECT hoeven niet gelijk te zijn aan de doeltabel
  • De positie van de kolommen in de SELECT (de waarde1, enz..) worden aangehouden bij de INSERT
  • Zorg bij de SELECT dat er geen unieke sleutels geselecteerd worden die al in de doeltabel zitten

INSERT INTO Customers ( cust_id,
                        cust_name,
                        cust_address
                        )
SELECT vend_id,
       vend_name,
       vend_address
FROM   Vendors
WHERE  vend_id = 'DLL01';

  • Er is een manier om een tabel te vullen zonder het INSERT statement
  • Met een CREATE SELECT statement kan een tabel gecopieerd worden
  • CREATE SELECT wordt niet door elk DBMS ondersteund (DB2)

-- Oracle / MySQL 
CREATE TABLE ordersCopy
     AS (SELECT * FROM Orders);	

-- SQL Server 
SELECT * INTO ordersCopy FROM Orders;	

  • Bij deze SELECT statements kunnen ook de WHERE, GROUP BY en Joins gebruikt worden
  • Er kan alleen gecopieerd worden naar 1 tabel (ondanks dat de benodigde data uit meerdere tabellen kan komen)
  1. Voeg jezelf toe aan de tabel Vendors


  1. Maak een backup tabel 'custCopy' van de Customers tabel