Aus dem Kurs: SQL Grundkurs 3: Data Manipulation Language (DML)

Wert in einer Spalte ändern

In Tabellen gespeicherte Werte müssen ab und zu auch wieder geändert werden. Das können Sie mit einer UPDATE- Anweisung bewerkstelligen. Wie das funktioniert, zeige ich Ihnen in diesem Schritt. Ich habe hier ein Statement vorbereitet, das aus der Kundentabelle Kunden mit einer Kundennummer ab 144 ausgibt. Das sind Datensätze, die wir in einer Übung eingefügt haben. Im Rahmen dieser Übung ist es in diesem Fall bei MySQL viermal passiert. Das spielt auch keine Rolle. Aber was wir hier sehen ist, dass hier beim Einfügen ein Tippfehler passiert ist. Der Stadtmusikantenplatz ist ohne das T bei "dt" von Stadt eingefügt worden Das möchte ich nun korrigieren. Um etwas zu ändern, verwenden wir eine UPDATE-Anweisung. Diese beginnt mit dem Schlüsselwort UPDATE und wird gefolgt vom Namen der Tabelle, in der ich was ändern möchte – in unserem Fall eben Kunden. Gefolgt wird UPDATE von der Anweisung SET. In der Anweisung SET wird definiert, welche Spalte welchen neuen Wert erhalten soll. In dem Fall soll die Spalte "strasse" den neuen Wert "Stadtmusikantenplatz" bekommen. Ich kopiere mir das hier unten aus dem Grid und ergänze noch das harte T. Würde ich dieses Statement in SQL so ausführen, wäre das wie ein SELECT ohne WHERE-Klausel, das alle Zeilen zurückliefert, ein UPDATE, das alle Zeilen ändert. Das möchte ich nicht, deshalb ist der dritte Teil beinahe der Wichtigste, nämlich die WHERE-Klausel. In der WHERE-Klausel definiere ich, welche Zeile oder welche Zeilen geändert werden sollen. Möchte man einen bestimmten Datensatz ändern, verwendet man dafür sehr häufig die Primärschlüssel-Information, in unserem Fall also die Spalte "kdnr", die Kundennummer. Ich werde nun den ersten dieser vier Datensätze ändern und daher als Bedingung "WHERE kdnr = 144" eintragen. Diese einfache Anweisung überschreibt also an dieser Stelle diesen fehlerhaften Eintrag. Wir sehen hier an der Meldung "1 row(s) affected", dass dieses Statement eine Zeile, wie erwartet, geändert hat. Die Kontrolle zeigt uns, dass nun beim ersten Eintrag diese Korrektur vorgenommen worden ist. Selbstverständlich kann man das auch auf alle anderen übertragen. Wir könnten dieses UPDATE z.B. auf alle ausführen – dann müssen wir nur die WHERE-Klausel anpassen –, bei denen ebenso "Stadt" ohne "dt" eingegeben worden ist, d.h. z.B. "WHERE strasse LIKE", und ich kopiere mir hier nur diesen Teil – könnte natürlich auch den kompletten Text hier eingeben, aber ich verwende einfach den Teil "Stadtmusik", in der Annahme, dass alle anderen hier auch passen werden – und führe dieses Statement nun aus. Nun ist auch bei den übrigen dreien der entsprechende Tippfehler korrigiert worden und wir können das Ergebnis noch kontrollieren. Und nun sind alle vier, wenn auch nur Testeinträge, mit einem korrigierten Straßennamen hier zu finden. Dieses Statement ist zur Gänze ANSI-konform, d.h., egal welche der beiden Varianten wir nutzen möchten, wir können beide eins zu eins auch z.B. bei Microsoft SQL Server ausführen. Hier habe ich allerdings nur einen fehlerhaften Eintrag. Es spielt keine Rolle. Ich führe dieses UPDATE aus. Eine Zeile ist betroffen und wir haben hier den Eintrag korrigiert. Last, but not least, auch bei Oracle: Wie viele Fehleinträge finde ich hier? In diesem Fall ist es eine ganze Menge: sieben Stück. Da ist es gut, dass ich das zweite Statement kopiert habe und nicht das erste. Nicht vergessen: Bei Oracle muss ich auch noch auf die Groß-/Kleinschreibung achten, was hier allerdings der Fall ist. Deshalb funktioniert auch dieses Statement. Sieben Zeilen sind aktualisiert worden. Und wir sehen hier, dass der Tippfehler ausgebessert worden ist. Wenn Sie also Datensätze ändern wollen, definieren Sie über ein UPDATE, in welcher Tabelle das geschehen soll, und in der SET-Anweisung, welche Spalte Sie ändern möchten. In der WHERE-Klausel können wir definieren, wie die Datensätze aussehen müssen, die geändert werden sollen. Dies ist komplett analog zu sehen wie bei einem SELECT.

Inhalt