|
Insert - Statement
Bedeutung: Mit der INSERT-Anweisung lassen sich neue Datesätze in eine Tabelle einspielen. Allgemeine Form: a) Kurzform
b) Vollständige Form
Bei der Kurzform muss die Anzahl der Werte genau der Anzahl der Felder in der Tabelle entsprechen. Die Werte werden in der Reihenfolge der in der Tabelle vorkommenden Felder in die Tabelle eingespielt. Um Fehler zu vermeiden sollte man hier immer auf die vollständige Form der INSERT-Anweisung zurückgreifen. Einen Datensatz in eine Tabelle einspielen Beispiel: In folgende Tabellenstruktur soll ein Datensatzeingefügt werden. Das Feld id
ist ein INTEGER-Feld, das eine eindeutige Nummer - die automatisch von MySQL vergeben wird (Autoincrement) -
für jeden Datensatz enthält.
Die Verwendung der folgenden Kurzform wird hier fehlschlagen:
Grund: Der Wert für das Feld id ist in der Werteliste nicht vorhanden.
Die Anzahl der Werte stimmt nicht mit der Anzahl der Felder überein.
Aber auch wenn der Wert für das Feld id mit angegeben wird kann die INSERT-Anweisung
fehlschlagen. Da man nicht immer sicher sein kann, welche Werte in der Spalte id bereits
vergeben sind kann es passieren, daß man versucht einen in der Spalte bereits vergebenen Wert
einzufügen. Dies führt zu einem Fehler und damit auch dazu, daß die Anweisung nicht ausgeführt wird.
Die vollständige Anweisung würde hier in jedem Fall eher zum Erfolg führen:
Der Wert für das Feld id braucht hier nicht mit angegeben werden da klar ist
welcher Wert in welches Feld eingespielt werden soll. MySQL würde automatisch einen DEFAULT-Wert für
alle nicht im Statement genannten Felder mit einfügen, in diesem Fall also auch für das Feld id.
Mehrere Datensätze auf einmal in eine Tabelle einspielen Hat man sehr viele Datensätze in eine Tabelle einzuspielen kann man sich einiges an Schreibarbeit sparen indem man einfach alle Wertelisten jeweils durch Komma getrennt hintereinander schreibt. Auch hier kann man entweder die Kurzfrm oder die vollständige Form verwenden. a) Kurzform
b) Vollständige Form
Hinweis: "Multiple Inserts" werden wesentlich schneller abgearbeitet als einzelne Inserts (vorrausgesetzt die Anzahl der einzufügenden Datensätze ist gleich). Fehler bei doppelten Werten vermeiden (INSERT IGNORE INTO...) Wenn Daten in eine Tabelle mit eindeutigen Schlüsseln eingespielt werden kommt es zu Fehlern, wenn versucht wird einen bereits enthaltenen Wert erneut in die Tabelle bzw. Spalte einzufügen. Diese Fehler und damit den Abbruch der SQL-Anweisung kann man vemeiden wenn man im Statement IGNORE verwendet.
Die einzufügende Zeile, die den Wert in einer Spalte verdoppeln würde, wird bei IGNORE verworfen. Dabei wird keine Fehlermeldung ausgegeben. Daten aus einer bereits bestehenden Tabelle in eine andere Tabelle übernehmen Mit dem folgenden Statement kann man MySQL anweisen, die Daten aus einer bereits bestehenden Tabelle in eine andere einzufügen. Voraussetzung dafür ist allerdings, daß die betroffenen Tabellen eine idetische Struktur besitzen.
Selbstverständlich kann man alle Möglichkeiten des SELECT-Statements wie z.B. die WHERE-Bedingung, die GROUP BY-Klausel oder auch ORDER BY hier auch nutzen:
Daten aus einer CSV-Datei in eine Tabelle übernehmen In MySQL gibt es die Möglichkeit, Daten aus einer CSV-Datei in eine bestehende Tabelle zu übernehmen. Jede Zeile in der CSV-Datei entspricht später einem Datensatz in der Tabelle.
Wichtig: Die Datenstruktur in der Datei muss der der Tabelle entsprechen (Anzahl der Werte pro Zeile muss der Anzahl der Felder in der Tabelle entsprechen). Als Feldtrenner und als Zeilenbegrenzer sollte man solche Zeichen verwenden, die mit Sicherheit nicht in den Daten der Datei vorkommen. Ist 'ENCLOSED BY' angegeben, so nimmt MySQL an, dass die Daten in der Datei jeweils in das angegebene Begrenzungszeichen eingeschlossen sind. Die Angabe ist optional. |
|||||||||||||||||||||||||||||||||||||||||||||||
|
Letzte Änderung: 17. Mai 2002, 22:26 Uhr © 2002, Klaus Becker, becker-k@web.de |