Home - SQL Befehle - Datenmanipulation www.sqldocu.com
zurück vor



Daten einfügen


Beschreibung
top
Bevor du Informationen mit Hilfe eines RDBMS (MySQL, Oracle, Informix...) abspeichern kannst, muss zuvor eine Datenbank (DB) mit einer oder mit mehreren entsprechenden Tabelle(n) angelegt worden sein. Folgende Abschnitte solltest du bereits gelesen haben:
Um Informationen (Datensätze) in eine Tabelle einzufügen, muss man die entsprechenden Rechte besitzen (siehe Datenbank Administration). Meist ist man der Besitzer der Tabelle, womit die nötigen Rechte vorhanden sind.
Mit dem Befehl INSERT INTO werden Daten zeilenweise in Tabellen eingefügt. Ein INSERT Befehl bezieht sich immer nur auf eine Tabellen. Will man 2 Tabellen befüllen sind 2 getrennt Abfragen nötig.
Der INSERT Befehl wird sofort ausgeführt. Manche RDBMS bieten die Möglichkeit mit SET AUTOCOMMIT OFF Anweisungen temporär zu speichern, und somit später rückgängig zu machen (siehe COMMIT/ROLLBACK).


Syntax einfach
top
INSERT INTO
Urheber.   optional  
TabelleName | ViewName
( SpaltenName1 [,SpaltenName2] [,..] )   optional  
VALUES ( Wert1 [,Wert2] [,..] )

Syntax vollständig
INSERT INTO
Urheber.   optional  
TabelleName | ViewName
( SpaltenName1 [,SpaltenName2] [,..] )   optional  
VALUES (Ausdruck) | VALUES DEFAULT | SELECT ANWEISUNG
BEFORE|AFTER ELEMENT WHERE-KLAUSEL   optional  

    Ausdruck
Wert|Default   [,Wert|,Default]   [,..]   optional  
| ... trennt Syntaxmöglichkeiten (entweder oder)
[] ... Syntax innerhalb dieser Klammern ist optional
optional ... Syntax in dieser Zeile ist optional
Hinweis:
Der oben gezeigte Syntax ist konform zum ANSI Standard. Bis auf die Klausel BEFORE|AFTER ELEMENT WHERE-KLAUSEL wird er von nahzu jedem RDBMS unterstützt.
Mit der Klausel (SpaltenName1 [,SpaltenName2] [,..]) werden die SpaltenNamen angegeben, die eingefügt werden sollen. Diese Option kann weggelassen werden. Wir empfehlen, die SpaltenNamen immer anzugeben. Wird diese Option weggelassen, muss in der Klammer hinter VALUES für jede Spalte ein Wert angegeben werden. Wird später von der Tabelle ein Spale entfernt bzw. dazugefügt, funktioniert der INSERT Befehl ohne Klausel in der die Spalten angegeben werden, nicht mehr. Umgekehrt, wurden die Spalten die durch die INSERT Anweisung betroffen sind angegeben, funktioniert die Anweisung weiterhin.

Beispiele:
INSERT INTO meineTabelle (Spalte1,Spalte3) VALUES (4,´James Kirk´)
INSERT INTO meineTabelle (Spalte1,Spalte3) VALUES (3,DEFAULT)
INSERT INTO meineTabelle (Spalte1,Spalte3) VALUES DEFAULT
INSERT INTO meineTabelle (Spalte1) VALUES (28) BEFORE ELEMET WHERE Spalte1 <29

Beispiel Tabelle:
top
Sie wird in mehreren Beispielen verwendet um SQL besser darstellen zu können.
TabelleName: emailAdressen
Die Tabelle emailAdressen besteht aus 4 Spalten und 5 Reihen
Spalte1 hat den Namen vorname.
Spalte2 hat den Namen nachname
Spalte3 hat den Namen email
Spalte4 hat den Namen gewicht

Spaltenname vorname nachname email gewicht
Reihe 1 Michaela König michi@yahoo.de 71
Reihe 2 Kati Müller kati@hotmail.com 48
Reihe 3 Conny Schmid conny3@hotmail.com 63
Reihe 4 Linda Becker linda@hotmail.de 56
Reihe 5 Kati Auer kati@gmx.de 52

Die Tabelle emailAdressen2 besteht aus 4 Spalten und 0 Reihen (Tabelle ist leer).
Spalte1 hat den Namen vorname.
Spalte2 hat den Namen nachname
Spalte3 hat den Namen email
Spalte4 hat den Namen gewicht

Spaltenname vorname nachname email gewicht



Ganze Zeile einfügen
top
INSERT INTO emailAdressen
  ( vorname, nachname, email, gewicht )
VALUES
  (´Eva´,´Kaufmann´,´eva@yahoo.com´,56)

Mit diesem SQL Befehl wird eine Zeile in die Tabelle emailAdressen eingefügt. Zeichenketten müssen zwischen einfachen oder doppelten Anführungszeichen stehen, um eingefügt werden zu können. Das RDBMS führt vor dem Einfügen einer Zeile einen Integritätstest durch. Dabei wird untersucht ob die eingefügten Werte dem Datentyp der Spalte entsprechen, ob die einzufügenden Spalten existieren... Weiters wird überprüft ob vom Benutzer der Wertebereich einer Spalte eingeschränkt wurde (siehe Vorschriften erstellen und Tabellen erstellen).

Tabelle nach Insert Anweisung:
Michaela König michi@yahoo.de 71
Kati Müller kati@hotmail.com 48
Conny Schmid conny3@hotmail.com 63
Linda Becker linda@hotmail.de 56
Kati Auer kati@gmx.de 52
Eva Kaufmann eva@yahoo.com 56

Tabelle emailAdressen anzeigen
PHP Syntax     PERL Syntax


Spaltenwerte einfügen
top
INSERT INTO emailAdressen
  ( vorname, nachname )
VALUES
  (´Eva´,´Kaufmann´)

Mit diesem SQL Befehl wird eine Zeile in die Tabelle emailAdressen eingefügt. Für die Spalten email und gewicht wurden keine Werte definiert. Das RDBMS füllt diese beiden Spalten automatisch mit DEFAULT Werten. Der DEFAULT Wert kann bei der Erstellung der Tabelle vom Benutzer festgelegt werden (siehe DEFAULT Wert definieren). Hat er dies nicht gemacht so wählt das RDBMS den DEFAULT Wert abhängig vom Datentyp der Spalte (z.B: für eine Zeichenkette ist der DEFAULT Wert eine leere Zeichenkette für eine Zahl ist der DEFAULT Wert NULL). Bei der Erstellung der Tabelle kann festgelegt werden, dass für bestimmte Spalten immer ein Wert eingefügt werden muss (siehe Tabelle erstellen - NOT NULL). Bevor die Zeile in die Tabelle eingefügt wird füht das RDBMS einen Integritätstest durch.

Tabelle nach Insert Anweisung:
Michaela König michi@yahoo.de 71
Kati Müller kati@hotmail.com 48
Conny Schmid conny3@hotmail.com 63
Linda Becker linda@hotmail.de 56
Kati Auer kati@gmx.de 52
Eva Kaufmann NULL

Tabelle emailAdressen anzeigen
PHP Syntax     PERL Syntax


Tabelle eines anderen Benutzers füllen
top
INSERT INTO Benutzer2.emailAdressen
  ( vorname, nachname, email, gewicht )
VALUES
  (´Eva´,´Kaufmann´,´eva@yahoo.com´,56)

Unser BenutzerName lautet Benutzer1 und wir wollen in die Tabelle emailAdressen des Benutzers Benutzer2 eine Zeile einfügen. Voraussetztung dass der Befehl ausgeführt werden kann, ist, dass Benutzer2 uns die entsprechenden Rechte erteilt hat (siehe Datenbank Administration). Wie eine Zeile in eine Tabelle eingefügt wird, zeigen wir in Ganze Zeile einfügen und Spaltenwerte einfügen.

Tabelle nach Insert Anweisung:
Michaela König michi@yahoo.de 71
Kati Müller kati@hotmail.com 48
Conny Schmid conny3@hotmail.com 63
Linda Becker linda@hotmail.de 56
Kati Auer kati@gmx.de 52
Eva Kaufmann eva@yahoo.com 56

Tabelle emailAdressen anzeigen
PHP Syntax     PERL Syntax


Tabelle mit Inhalt einer anderen Tabelle befüllen
top
INSERT INTO emailAdressen2
  ( vorname, nachname )
VALUES
  SELECT FROM emailAdressen vorname, nachname

Der gesamte Inhalt der Spalten vorname und nachname wird von Tabelle emailAdressen in die Tabelle emailAdressen2 kopiert. Die Datentypen der kopierten Spalten müssen natürlich übereinstimmen (siehe Datentypen).

Tabelle emailAdressen2 nach Insert Anweisung:
vorname nachname email gewicht
Michaela König NULL
Kati Müller NULL
Conny Schmid NULL
Linda Becker NULL
Kati Auer NULL
Eva Kaufmann NULL

Tabelle emailAdressen anzeigen
PHP Syntax     PERL Syntax


Ganze Tabelle kopieren
top
INSERT INTO emailAdressen2
  ( vorname, nachname, email, gewicht )
VALUES
  SELECT FROM emailAdressen vorname, nachname, email, gewicht

Der gesamte Inhalt der Tabelle emailAdressen wird in die Tabelle emailAdressen2 kopiert. Die Datentypen der kopierten Spalten müssen natürlich übereinstimmen (siehe Datentypen).

Tabelle emailAdressen2 nach Insert Anweisung:
Michaela König michi@yahoo.de 71
Kati Müller kati@hotmail.com 48
Conny Schmid conny3@hotmail.com 63
Linda Becker linda@hotmail.de 56
Kati Auer kati@gmx.de 52

Tabelle emailAdressen anzeigen
PHP Syntax     PERL Syntax


top