MySQL: Daten bearbeiten
Im Folgenden werden die Befehle beschrieben, mit denen man Daten in MySQL auswählen, anzeigen, ändern, hinzufügen oder löschen kann: SELECT, UPDATE, INSERT, REPLACE, DELETE. Jeder dieser Befehle hat mehr oder weniger viele Varianten. Alle zu beschreiben, ist in diesem Rahmen nicht möglich. Wir beschränken uns deshalb auf die wichtigsten.SELECT
SELECT
dient der Auswahl von Daten, es erfolgt hier keine Änderung innerhalb der Tabelle jeweiligen Tabelle(n). Meist dient SELECT
zur Anzeige ausgewählter Daten einer Tabelle. Dann sieht das Grundgerüst einer SELECT
-Anweisung so aus:
SELECT Felder FROM Tabelle WHERE [Bedingung] [Ergänzungen]
Mehr über SELECT
- Felder (Spalten)
- Tabelle
- Bedingung (die Where-Klausel)
- Sortierung (ORDER BY)
- GROUP BY
- HAVING
- Verknüpfung von Tabellen
INSERT
DieINSERT
-Anweisung fügt neue Datensätze in eine Tabelle ein. Eingefügt wird immer nur komplette Datensätze (alle Felder): Felder, für die kein Wert angeben wird, werden leer (sog. Null
-Wert) angehängt. Es gibt in MySQL 2 Varianten der Syntax: die Aufzählungs- und die SET
-Variante. Die Aufzählungsvariante ist kompatibel zu anderen Datenbank-Systemen, deshalb wird sie hier zuerst beschrieben.
INSERT INTO Tabelle (Feldname1, Feldname2, ..., FeldnameN)
VALUES (Wert1, Wert2,...WertN);
Mehr über INSERT
Update
Update ändert den Inhalt vorhandener (bereits gespeicherter) Datensätze.Syntax
UPDATE Tabelle SET Feld1 = Wert1, Feld2 = Wert2, ...
WHERE [where-Klausel];
Tabelle
In einerUPDATE
-Anweisung kann immer nur eine Tabelle angesprochen werde. Will man beispielsweise Werte in 3 Tabellen ändern, muss man also 3 UPDATE
-Anweisungen schreiben.
SET
Hinter dem SchlüsselwortSET
erwartet SQL einen Feldnamen der angegebenen Tabelle. Pro UPDATE
-Anweisung darf nur einmal SET
enthalten sein.
Feld = Wert
Die Spalte wird mit dem Wert gefüllt, der hinter dem Gleichheitszeichen steht. Die Einschränkung auf bestimmte Zeilen nimmt man in derWHERE
-Klausel vor. Sie gilt für alle Feldzuweisungen eines Befehls. Man kann in einer
UPDATE
-Anweisung praktisch beliebig viele Zuweisungen dieser Art vornehmen, allerdings darf jede Spalte nur einmal genannt werden. Die Zuweisungen werden durch Komma voneinander getrennt:
UPDATE Preis
SET Farbe = 'grün', Einkaufspreis = 0.75, Verkaufspreis = 0.8
WHERE ArtikelNr = 1 AND Farbe = 'rot';
WHERE-Klausel
DieWHERE
-Klausel funktioniert bei UPDATE
genauso wie bei SELECT
wird sie weggelassen, werden alle Datensätze der angesprochenen Tabelle geändert, ohne Einschränkungen. Beispiel siehe oben.
DELETE
DELETE
löscht bestimmte Datensätze aus einer Tabelle. Feldnamen dürfen bei DELETE
nicht angegeben werden. Das wäre auch sinnlos, denn DELETE
wirkt immer auf ganze Datensätze.
DELETE FROM Tabelle WHERE [where-Klausel];
Die Regeln für dieWHERE
-Klausel sind bei DELETE
die gleichen wie bei SELECT
und UPDATE
. Wird keine WHERE
-Klausel angegeben, werden alle Zeilen der Tabelle gelöscht.
REPLACE
Die Syntax vonREPLACE
ist genauso wie die von INSERT
(beide Varianten - siehe dort). REPLACE
ist eine Anweisung, die es als Standard nur in MySQL gibt. REPLACE
ändert den Inhalt vorhandener Datensätze, wenn es welche findet, und fügt einen neuen Datensatz ein, wenn es keinen findet. Damit ist
REPLACE
eine Kombination von UPDATE
und INSERT
und löst zugleich deren Schwachstellen: UPDATE
ändert nur Datensätze, die es auch findet. Wenn man nicht sicher ist, ob es den betreffenden Satz gibt, muss man vorher ein SELECT
ausführen und auswerten. Wenn man andererseits INSERT
nimmt, ohne zu prüfen, ob der gleiche Datensatz schon da ist, läuft man Gefahr, dass man ihn nachher doppelt in der Tabelle hat. Das kann man zwar durch einen eindeutigen Index verhindern, der würde dann aber wiederum eine störende Fehlermeldung auslösen. All das kann man mit REPLACE
umgehen.REPLACE
hat allerdings eine entscheidende Schwachstelle: Die WHERE
-Klausel und die Tabelle müssen so angelegt sein, dass MySQL problemlos unterscheiden kann, ob Datensätze geändert oder hinzugefügt werden müssen. Dazu braucht es eindeutige Schlüssel. Im schlimmsten Fall kann sich das so auswirken, dass man nach dem REPLACE
weniger Datensätze hat als vorher.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ Mit SELECT Daten auslesen
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project