Zurück zur Artikelliste Artikel
5 Leseminuten

Verwendung von CASE mit datenverändernden Anweisungen

Was passiert, wenn Sie CASE mit den datenverändernden Anweisungen von SQL kombinieren? Finden Sie es in diesem Artikel heraus.

Der Ausdruck CASE ist ein sehr nützlicher Teil von SQL, den Sie häufig verwenden werden. Was der CASE-Ausdruck bewirkt, wie er zu formatieren ist und wie er in einer SELECT -Anweisung zu verwenden ist, haben wir bereits in"Mit CASE die Logik einer SELECT-Anweisung ergänzen" behandelt. In einem anderen Artikel,"Sortieren von Datensätzen mit der ORDER BY-Klausel", wurde gezeigt, wie CASE in einer ORDER BY -Klausel verwendet werden kann.

Aber wir haben noch nicht alle Möglichkeiten des CASE Ausdrucks ausgeschöpft. In diesem Beitrag geht es um die Verwendung von CASE mit den datenverändernden Anweisungen von SQL.

Was sind die datenverändernden Anweisungen von SQL?

Es gibt drei datenverändernde Anweisungen in SQL. Sie werden als datenverändernd bezeichnet, weil sie Änderungen an den in einer Datenbanktabelle gespeicherten Daten vornehmen. Diese Anweisungen sind selbst unerfahrenen SQL-Benutzern recht vertraut. Sie sind:

  • INSERT - Hinzufügen von Datensätzen zu einer Tabelle
  • UPDATE - Ändert Werte in Tabellenspalten
  • DELETE - Entfernt Datensätze aus der Tabelle

Wir werden sehen, wie jede dieser Anweisungen mit einem CASE Ausdruck funktioniert. Bevor wir jedoch mit dem Schreiben von Abfragen beginnen, schauen wir uns die car Tabelle, die unten gezeigt wird. Wir werden sie in allen unseren Beispielen verwenden:

id brand model info
1 Ford Fiesta NULL
2 Ford Mondeo NULL
3 Opel Astra NULL
4 Ford Galaxy NULL
5 Toyota Corolla NULL
6 Toyota RAV4 NULL

Wie Sie sehen, speichert diese Tabelle Details über Autos: ihre interne ID-Nummer, die Automarke, den Modellnamen und ein optionales Feld für zusätzliche Informationen.

Wir beginnen unsere Untersuchung der Verwendung von datenverändernden Anweisungen mit dem Ausdruck CASE mit der Anweisung INSERT.

Einfügen von Datensätzen mit CASE

Sie können eine INSERT -Anweisung verwenden, um neue Datensätze in eine Tabelle einzugeben. Wenn Sie Datensätze aus einer Tabelle in eine andere verschieben möchten, verwenden Sie die Anweisung SELECT INTO.

Unser erstes Beispiel zeigt das Hinzufügen von Informationen in eine neue Tabelle, tab. Diese neue Tabelle wird mit der Abfrage erstellt. Beachten Sie, dass wir dazu eine SELECT INTO Anweisung verwenden. Das funktioniert folgendermaßen:

SELECT brand, model,
          CASE brand
               WHEN 'Ford' THEN 'Founder was Henry Ford'
               WHEN 'Opel' THEN 'Founder was Adam Opel'
               WHEN 'Toyota' THEN 'Founder was Kiichiro Toyoda'
                ELSE '-'
		END AS info
INTO tab
FROM car;

Die Anweisung SELECT INTO beginnt mit der Übernahme von Daten aus den Spalten brand und model in der Tabelle car Tabelle und verschiebt sie in die neu erstellte tab Tabelle. Die dritte Spalte in tab ist die Spalte info. Der Wert in der Spalte info hängt von dem Wert in der Spalte car.brand ab. Wenn der Wert in der Spalte car.brand "Ford" lautet, wird in der Spalte tab.info die Zeichenfolge "Founder was Henry Ford" angezeigt. Wenn die Marke "Opel" ist, wird die Zeichenfolge "Gründer war Adam Opel" angezeigt; für "Toyota" wird die Zeichenfolge "Gründer war Kiichiro Toyoda" angezeigt. In allen anderen Fällen ist der zurückgegebene Wert "- ".

Hier ist die resultierende tab Tabelle und ihr Inhalt:

brand model info
Ford Fiesta Founder was Henry Ford
Ford Mondeo Founder was Henry Ford
Opel Astra Founder was Adam Opel
Ford Galaxy Founder was Henry Ford
Toyota Corolla Founder was Kiichiro Toyoda
Toyota RAV4 Founder was Kiichiro Toyoda

Verwendung von CASE mit UPDATE

Der Ausdruck CASE kann auch in einer UPDATE -Anweisung verwendet werden. Die Anweisung UPDATE ist Ihnen bekannt; sie ändert oder aktualisiert vorhandene Spaltenwerte. Wenn Sie Datensätze auf der Grundlage von Spaltenwerten aktualisieren möchten, können Sie dies mit dem Ausdruck CASE tun. Sehen Sie sich das folgende Beispiel an:

UPDATE car SET info =
CASE brand
          WHEN 'Ford' THEN 'Founder was Henry Ford'
          WHEN 'Toyota' THEN 'Founder was Kiichiro Toyoda'
          ELSE '-'
          END
;

Wir sehen, dass die Informationen in der Spalte info aktualisiert wurden. Normalerweise würden wir den neuen Wert in die SET Klausel einfügen. Stattdessen wurde dieser vorgegebene Wert durch den Ausdruck CASE ersetzt. CASE prüft den Wert in der Spalte brand und verwendet diesen, um zu bestimmen, was in die Spalte info eingegeben werden soll. Wenn in der Spalte brand etwas anderes als "Ford" oder "Toyota" gespeichert ist, wird in der Spalte info für diesen Datensatz eine "-"-Zeichenfolge angezeigt.

Hier ist die car Tabelle nach der Aktualisierung:

id brand model info
1 Ford Fiesta Founder was Henry Ford
2 Ford Mondeo Founder was Henry Ford
3 Opel Astra
4 Ford Galaxy Founder was Henry Ford
5 Toyota Corolla Founder was Kiichiro Toyoda
6 Toyota RAV4 Founder was Kiichiro Toyoda

Beachten Sie, dass der Datensatz für den Opel Astra keinen Eintrag in der Spalte info enthält. Das liegt daran, dass "Opel" nicht als Marke im WHEN des CASE Ausdrucks angegeben wurde. Der in ELSE definierte Wert wurde zurückgegeben.

Löschen von Daten mit dem CASE-Ausdruck

Kommen wir nun zur letzten der datenverändernden Anweisungen: DELETE. Sie wird verwendet, um Datensätze aus einer Tabelle zu löschen. Auch hier können Sie den Ausdruck CASE in der Klausel WHERE verwenden, um Ihre Ergebnisse zu kontrollieren. Sehen Sie sich dieses Beispiel an:

DELETE FROM car 
WHERE FALSE = CASE 
    WHEN info IS NOT NULL THEN TRUE
      ELSE FALSE
END
;

Diese CASE prüft, ob der Wert in der Spalte info NULL ist. Wenn er nicht NULL ist, wird der Wert TRUE zurückgegeben. Wenn der Wert NULL ist, wird der Wert FALSE von ELSE zurückgegeben. Wenn der Ausdruck CASE einen FALSE-Wert zurückgibt, wird dieser Datensatz gelöscht.

Unten sehen wir die car Tabelle, nachdem Zeilen mit NULL-Werten in der Spalte info gelöscht wurden:

id brand model info
1 Ford Fiesta Founder was Henry Ford
2 Ford Mondeo Founder was Henry Ford
4 Ford Galaxy Founder was Henry Ford
5 Toyota Corolla Founder was Kiichiro Toyoda
6 Toyota RAV4 Founder was Kiichiro Toyoda

Erfahren Sie mehr über den SQL CASE-Ausdruck

Wenn Sie mehr über den Ausdruck CASE erfahren möchten, besuchen Sie den Kurs Standard-SQL-Funktionen von LearnSQL. Sie werden mehr über diesen und andere Ausdrücke erfahren. Außerdem können Sie Ihre neuen Kenntnisse mit interaktiven Übungen üben. Probieren Sie es noch heute aus!