programmera.net -> oracle -> normal     för utskrift      info@programmera.net

INSERT i Oracle

1. INSERT
2. INSERT utan kolumnlista
3. INSERT med SELECT
4. INSERT och DEFAULT

1. INSERT

Nu ska vi lägga till några rader i tabellen animals som har följande utseende:
SQL> DESC animals
Name		  Null?    Type
----------------- -------- -------------
ID                NOT NULL NUMBER(5)
NAME                       VARCHAR2(10)
WEIGHT                     NUMBER(6)
BIRTH                      DATE
En vanlig INSERT-sats kan se ut såhär:
SQL> INSERT INTO animals (id,name,weight,birth)
  2  VALUES (1,'fluffy',13,'23-JAN-00');
1 row created.
Direkt efter tabellnamnet "animals" kommer kolumnlistan som beskriver vilka kolumner som ska man ger ett värde på. På andra raden efter VALUES ges själva värdena. Som synes behöver man inte några fnuttar kring data av typen NUMBER.

2. INSERT utan kolumnlista

Man kan undvika att skriva kolumnnamnen, men då måste man skriva de olika värdena i samma ordning som kolumnerna listas när man listar tabellen med describe:
SQL> DESC animals
Name		  Null?    Type
----------------- -------- -------------
ID                NOT NULL NUMBER(5)
NAME                       VARCHAR2(10)
WEIGHT                     NUMBER(6)
BIRTH                      DATE
SQL> INSERT INTO animals
  2  VALUES (2,'snaky',8,'12-AUG-97');
1 row created.
Väljer man denna metod måste alla kolumner finnas med i insert-satsen. Däremot måste bara de värden som är NOT NULL ha ett värde, se nedan:
SQL> INSERT INTO animals 
  2  VALUES (3,null,null,null);
1 row created. 
SQL> SELECT * FROM animals;
    ID NAME       WEIGHT BIRTH
------ ---------- ------ ---------
     1 fluffy         13 23-JAN-00 
     2 snaky           8 12-AUG-97
     3 

3. INSERT med SELECT

Vill man kopiera data från en tabell till en annan finns en enkel metod:
SQL> INSERT INTO animals
  2   (SELECT * FROM animals_org);
I detta fall kopierar man all data från en tabell "ANIMALS_ORG" som har samma kolumner som "ANIMALS". Denna metod påminner om CREATE TABLE AS SELECT som beskrivs på sidan om  tabeller .

4. INSERT och DEFAULT

I normala fall om man vill att en kolumn ska få ett defaultvärde undviker man att specifiera den kolumnen i sin kolumnlista:
SQL> INSERT INTO animals (id, name, birth) 
  2  VALUES (4,'tuddy','12-AUG-97');
1 row created.
I exemplet ovan får tuddy ett defaultvärde på sin vikt. Om det inte finns något kommer kolumnen att innehålla null. Det andra sättet att tilldela defaultvärde är att helt enkelt skriva "default" där man vill att värdet ska in:
SQL> INSERT INTO animals (id, name, weight, birth) 
  2  VALUES (4,'tuddy',default, '12-AUG-97');
1 row created.