Änderungsabfragen in SQL (Änderungsabfragen in SQL), Lektion, Seite 722942
https://www.purl.org/stefan_ram/pub/update_sql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Änderungsanweisungen in SQL  (MySQL )

Änderungsanweisungen

Eine UPDATE-Änderungsanweisung erlaubt es, eine Spalte in einer Tabelle auf einen bestimmten Wert zu setzen.

Konsole (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE ZAHL ( I VARCHAR( 255 ), DE VARCHAR( 255 ), EN VARCHAR( 255 ) );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '0', 'NULL', 'ZERO' );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '1', 'EINS', 'ONE' );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '2', 'ZWEI', 'TWO' );
SELECT * FROM ZAHL;
+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 1 | EINS | ONE |
| 2 | ZWEI | TWO |
+------+------+------+
UPDATE ZAHL SET DE = 'HAUS';
Rows matched: 3  Changed: 3  Warnings: 0
SELECT * FROM ZAHL;
+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | HAUS | ZERO |
| 1 | HAUS | ONE |
| 2 | HAUS | TWO |
+------+------+------+

UPDATE ZAHL SET DE = EN;

SELECT * FROM ZAHL;

+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | ZERO | ZERO |
| 1 | ONE | ONE |
| 2 | TWO | TWO |
+------+------+------+

Hinter »=« kann ein Ausdruck  stehen (sowohl in einer SET-Klausel als auch in einer WHERE-Klausel). Ein Ausdruck  ist ein Spaltenname oder ein Zeichenfolgenliteral  (also ein Text zwischen Apostrophen). Der Spaltenname steht für den Inhalt der Spalte (in der betreffenden Zeile), ein Zeichenfolgenliteral steht für den wörtlichen Text zwischen den Apostrophen.

Eingeschränkte Änderungsanweisungen

Wir hatten kürzlich die WHERE-Klausel der SELECT-Abfrage kennengelernt. Eine solche WHERE-Klausel kann auch für eine UPDATE-Änderungsanweisung zur Einschränkung der Änderung auf bestimmte Zeilen verwendet werden.

Konsole (MySQL )
DROP SCHEMA S; CREATE SCHEMA S; USE S;
CREATE TABLE ZAHL ( I INT, DE VARCHAR( 255 ), EN VARCHAR( 255 ) );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '0', 'NULL', 'ZERO' );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '1', 'EINS', 'ONE' );
INSERT INTO ZAHL ( I, DE, EN ) VALUES ( '2', 'ZWEI', 'TWO' );
SELECT * FROM ZAHL;
+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 1 | EINS | ONE |
| 2 | ZWEI | TWO |
+------+------+------+
SELECT * FROM ZAHL WHERE I = '2';
+------+------+------+
| I | DE | EN |
+------+------+------+
| 2 | ZWEI | TWO |
+------+------+------+

UPDATE ZAHL SET DE = 'ZWO' WHERE I = '2';

SELECT * FROM ZAHL;

+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | NULL | ZERO |
| 1 | EINS | ONE |
| 2 | ZWO | TWO |
+------+------+------+

Die WHERE-Klausel kann – wie bei einer SELECT-Abfrage – auch komplizierter sein als in diesem Beispiel. Falls sie auf mehrere Zeilen zutrifft, so werden alle diese Zeilen entsprechend der SET-Klausel geändert. Um zu vermeiden, daß unabsichtlich mehr als eine Zeile verändert wird, ist es am besten, falls möglich, zuerst einmal die richtige Zeile zu identifizeren und dann eine eindeutige WHERE-Klausel zu verwenden. Vor einer Änderungsabfrage kann die WHERE-Klausel auch erst einmal mit einer SELECT-Abfrage geprüft werden, wie oben auch zu sehen ist.

Man beachte, daß das Gleichheitszeichen »=« hinter »SET« eine etwas andere Bedeutung hat als das Gleichheitszeichen hinter »WHERE«. Hinter »WHERE« wird es verwendet, um eine Aussage  über eine Gleichheit zu formen, die wahr oder falsch sein kann. Hinter »SET« wird es verwendet, um eine Anweisung zu formulieren, deren Umsetzung eine Änderung  in einer Spalte der Tabelle bewirkt. Die Verbindung zwischen beidem besteht darin, daß direkt nach einer durch »SET DE = 'ZWO'« bewirkten Änderung einer Zelle die Aussage in »WHERE DE = 'ZWO'« für jene Zelle wahr ist.

Übungsaufgabe

Ändern Sie nach der Eingabe der folgenden Anweisungen einige Bezeichnungen aus der Tabelle mit Hilfe von UPDATE-Anweisungen in die heute üblichen Bezeichnungen.

Skript (MySQL )

DROP SCHEMA S; CREATE SCHEMA S; USE S;

CREATE TABLE BEZEICHNUNG ( I VARCHAR ( 255 ), BEZEICHNUNG VARCHAR ( 255 ));
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '0', 'Lehrter Stadtbahnhof' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '1', 'Bundesgrenzschutz' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '2', 'Karl-Marx-Stadt' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '3', 'Zaire' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '4', 'Grand Prix Eurovision de la Chanson Européenne' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '5', 'Rhodesien' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '6', 'Cassius Clay' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '7', 'Arbeitsamt' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '8', 'Ceylon' );
INSERT INTO BEZEICHNUNG ( I, BEZEICHNUNG ) VALUES ( '9', 'Dahomey' );

SELECT * FROM BEZEICHNUNG;

Aussprache
Grand Prix Eurovision de la Chanson Européenne gʀãː pʀiː ø ʁo vi zjɔ̃ də la ʃɑ̃ sɔ̃ ø ʁɔ pe ɛn

Zitate *

Datenänderungsanweisungen *

4.33.2.3 SQL-data change statements (gekürzt) *
The following are the SQL-data change statements:
— <insert statement>.
— <update statement: searched>.

Mehrere Spalten mit einer UPDATE-Anweisung ändern *

Es ist auch möglich, mehreren Spalten einen bestimmten Wert zu geben.

Konsole (MySQL )
UPDATE ZAHL SET DE = 'ZEIT', EN = 'TIME';
Rows matched: 3  Changed: 3  Warnings: 0
SELECT * FROM ZAHL;
+------+------+------+
| I | DE | EN |
+------+------+------+
| 0 | ZEIT | TIME |
| 1 | ZEIT | TIME |
| 2 | ZEIT | TIME |
+------+------+------+

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722942 stefan_ram:722942 Änderungsabfragen in SQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722942, slrprddef722942, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/update_sql