SQL Erste Schritte

Einfügen von Daten

Wenn Sie eine neue Tabelle erstellen, enthält diese keine Daten. Mit der Anweisung INSERT können Sie neue Zeilen in eine Tabelle eingeben. Diese Anweisung kann in zwei allgemeinen Formaten verwendet werden:

Eine Gesamtauswahl ist eine in Anweisungen INSERT oder CREATE VIEW verwendete bzw. auf ein Prädikat folgende Anweisung SELECT. Eine in runde Klammern gesetzte Gesamtauswahl wird im allgemeinen als Unterabfrage bezeichnet.

Abhängig von den Standardoptionen, die Sie bei der Erstellung der Tabelle ausgewählt haben, stellen Sie für jede Zeile, die Sie einfügen, entweder einen Wert zur Verfügung, oder Sie übernehmen einen Standardwert. Die Standardwerte für die unterschiedlichen Datentypen werden im Handbuch SQL Reference behandelt.

Die nächste Anweisung verwendet eine Klausel VALUES, um eine Datenzeile in die Tabelle PERS einzufügen:

  
     INSERT INTO PERS 
        VALUES (12, 'Harris', 20, 'Sales', 5, 18000, 1000, '1950-1-1')
     

Die folgende Anweisung verwendet die Klausel VALUES, um drei Zeilen in die Tabelle PERS einzufügen, wobei lediglich die IDs, die Namen und die Tätigkeitsbezeichnungen bekannt sind. Ist eine Spalte als NOT NULL definiert und enthält sie keinen Standardwert, müssen Sie einen Wert für diese Spalte angeben.

In einer Anweisung CREATE TABLE kann die Klausel NOT NULL in einer Spaltendefinition durch den Zusatz WITH DEFAULT erweitert werden. Wenn eine Spalte als NOT NULL WITH DEFAULT oder ein Konstantenstandardwert wie beispielsweise WITH DEFAULT 10 definiert ist und Sie die Spalte in der Spaltenliste nicht angeben, wird in der eingefügten Zeile der Standardwert in diese Spalte eingefügt. Beispiel: In der Anweisung CREATE TABLE wurde lediglich für die Spalte DEPT ein Standardwert angegeben und mit 10 definiert. Daher wird die Abteilungsnummer (Spalte DEPT) auf den Wert 10 gesetzt. Alle anderen Spalten, für die nicht explizit ein Wert angegeben wird, werden auf NULL gesetzt.

 
     INSERT INTO PERS (NAME, JOB, ID)
        VALUES ('Swagerman', 'Prgmr', 500), 
               ('Limoges', 'Prgmr', 510), 
               ('Li', 'Prgmr', 520)

Die folgende Anweisung gibt das Ergebnis der Einfügungen zurück:

     SELECT * 
        FROM PERS
 
     ID     NAME      DEPT   JOB   YEARS  SALARY    COMM      BIRTH_DATE
     ------ --------- ------ ----- ------ --------- --------- ----------
         12 Harris        20 Sales      5  18000.00   1000.00 01/01/1950
        500 Swagerman     10 Prgmr      -         -         - -         
        510 Limoges       10 Prgmr      -         -         - -         
        520 Li            10 Prgmr      -         -         - -         

Bitte beachten Sie, daß in diesem Fall nicht für alle Spalten Werte angegeben wurden. Nullwerte werden als Bindestrich (-) angezeigt. Damit dies funktioniert, muß die Liste der Spaltennamen sowohl hinsichtlich der Reihenfolge als auch in Bezug auf die Datentypen mit den Werten übereinstimmen, die in der Klausel VALUES angegeben werden. Wird die Liste der Spaltennamen übergangen (wie im ersten Beispiel), muß die nach VALUES angegebene Liste der Datenwerte dieselbe Reihenfolge wie die Spalten in der Tabelle aufweisen, in die die Werte eingefügt werden. Außerdem muß die Anzahl der Werte mit der Anzahl der Spalten in der Tabelle identisch sein.

Jeder Wert muß mit dem Datentyp der Spalte kompatibel sein, in die er eingefügt wird. Wenn für eine Spalte definitionsgemäß einen Nullwert enthalten kann und für diese Spalte kein Wert angegeben wird, erhält diese Spalte in der eingefügten Zeile den Wert NULL.

Im folgenden Beispiel wird in die Spalten YEARS, COMM und BIRTH_DATE ein Nullwert eingefügt, da für diese Spalten in der Zeile keine Werte angegeben wurden.

     INSERT INTO PERS (ID, NAME, JOB, DEPT, SALARY)
        VALUES (410, 'Perna', 'Sales', 20, 20000)

Das zweite Format der Anweisung INSERT eignet sich besonders gut, um eine Tabelle mit Werten aus Zeilen in einer anderen Tabelle zu füllen. Wie bereits beschrieben, verwenden Sie hierbei anstelle einer Klausel VALUES eine Gesamtauswahl, um die Spalten aus Zeilen in anderen Tabellen und/oder Sichten anzugeben.

Im folgenden Beispiel werden Daten aus der Tabelle STAFF für die Mitarbeiter der Abteilung 38 ausgewählt und in die Tabelle PERS eingefügt:

  
     INSERT INTO PERS (ID, NAME, DEPT, JOB, YEARS, SALARY)
        SELECT ID, NAME, DEPT, JOB, YEARS, SALARY
           FROM STAFF
           WHERE DEPT = 38

Im Anschluß an diese Einfügung erstellt die folgende Anweisung SELECT ein Ergebnis, das mit der Gesamtauswahl in der Anweisung INSERT identisch ist.

     SELECT ID, NAME, DEPT, JOB, YEARS, SALARY
        FROM PERS
        WHERE DEPT = 38
 

Das Ergebnis lautet:

                                                                               
ID     NAME      DEPT   JOB   YEARS  SALARY   
------ --------- ------ ----- ------ ---------
    30 Marenghi      38 Mgr        5  17506.75
    40 O'Brien       38 Sales      6  18006.00
    60 Quigley       38 Sales      -  16808.30
   120 Naughton      38 Clerk      -  12954.75
   180 Abrahams      38 Clerk      3  12009.75


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]