Articles

6.1. Gegevens invoegen

Wanneer een tabel wordt aangemaakt, bevat deze geen gegevens. Het eerste wat gedaan moet worden voordat een database van veel nut kan zijn, is het invoegen van gegevens. Gegevens worden conceptueel één rij per keer ingevoegd. Natuurlijk kan je ook meer dan één rij invoegen, maar er is geen manier om minder dan één rij in te voegen. Zelfs als je slechts enkele kolomwaarden weet, moet een volledige rij worden aangemaakt.

Om een nieuwe rij aan te maken, gebruik je het INSERT commando. Het commando heeft de tabelnaam en de kolomwaarden nodig. Neem bijvoorbeeld de tabel met producten uit hoofdstuk 5:

CREATE TABLE products ( product_no integer, name text, price numeric);

Een voorbeeldcommando om een rij in te voegen zou zijn:

INSERT INTO products VALUES (1, 'Cheese', 9.99);

De gegevenswaarden worden vermeld in de volgorde waarin de kolommen in de tabel voorkomen, gescheiden door komma’s. Meestal zullen de datawaarden literals (constanten) zijn, maar scalaire expressies zijn ook toegestaan.

De bovenstaande syntaxis heeft het nadeel dat je de volgorde van de kolommen in de tabel moet kennen. Om dit te vermijden kunt u de kolommen ook expliciet opnoemen. De beide volgende commando’s hebben bijvoorbeeld hetzelfde effect als het bovenstaande:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99);INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);

Veel gebruikers vinden het een goed gebruik om altijd de kolomnamen op te sommen.

Als u niet voor alle kolommen waarden hebt, kunt u er ook een paar weglaten. In dat geval worden de kolommen gevuld met hun standaardwaarden. Bijvoorbeeld:

INSERT INTO products (product_no, name) VALUES (1, 'Cheese');INSERT INTO products VALUES (1, 'Cheese');

Het tweede formulier is een PostgreSQL uitbreiding. Het vult de kolommen van links met zoveel waarden als zijn opgegeven, en de rest wordt standaard ingevuld.

Voor de duidelijkheid kunt u ook expliciet om standaardwaarden vragen, voor afzonderlijke kolommen of voor de hele rij:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT);INSERT INTO products DEFAULT VALUES;

U kunt meerdere rijen invoegen in een enkel commando:

INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);

Het is ook mogelijk om het resultaat van een query in te voegen (wat geen rijen, één rij of veel rijen kan zijn):

INSERT INTO products (product_no, name, price) SELECT product_no, name, price FROM new_products WHERE release_date = 'today';

Dit biedt de volledige kracht van het SQL query-mechanisme (hoofdstuk 7) voor het berekenen van de in te voegen rijen.

Tip: Als u veel gegevens tegelijk wilt invoegen, kunt u overwegen de opdracht COPY te gebruiken. Deze is niet zo flexibel als de INSERT-opdracht, maar wel efficiënter. Raadpleeg Paragraaf 14.4 voor meer informatie over het verbeteren van de prestaties van bulkladen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *