Kontakt aufnehmen

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

INSERT

Die INSERT-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 einer UPDATE-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üsselwort SET 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 der WHERE-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

Die WHERE-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 die WHERE-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 von REPLACE 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

Stefan Wienströer

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

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern