Bei älteren MySQL-Versionen (vor Version 4.1) wurden nur
verschachtelte Abfragen der Formen INSERT ... SELECT
...
und REPLACE ... SELECT ...
unterstützt. Zwar trifft dies bei MySQL 5.1
nicht mehr zu, aber nach wie vor werden gelegentlich andere
Möglichkeiten eingesetzt, um auf Mitgliedschaft in einer
Wertemenge zu prüfen. Außerdem ist es unter bestimmten
Umständen nicht nur möglich, eine Abfrage ohne Unterabfrage
zu schreiben, sondern es kann auch effizienter sein, einige
der folgenden Methoden zu verwenden, statt Unterabfragen
einzusetzen. Eine dieser Methode ist das Konstrukt
IN()
:
Betrachten Sie etwa folgende Abfrage:
SELECT * FROM t1 WHERE id IN (SELECT id FROM t2);
Sie kann wie folgt umgeschrieben werden:
SELECT DISTINCT t1.* FROM t1, t2 WHERE t1.id=t2.id;
Ein anderes Beispiel sind folgende Abfragen:
SELECT * FROM t1 WHERE id NOT IN (SELECT id FROM t2); SELECT * FROM t1 WHERE NOT EXISTS (SELECT id FROM t2 WHERE t1.id=t2.id);
Auch sie lassen sich mithilfe von IN()
umschreiben:
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL;
Ein LEFT [OUTER] JOIN
kann schneller sein
als die äquivalente Unterabfrage, weil der Server unter
Umständen in der Lage ist, ihn besser zu optimieren – eine
Tatsache, die nicht nur für den MySQL Server gilt. Vor SQL-92
waren äußere Joins nicht vorhanden, d. h., Unterabfragen
stellten für bestimmte Aufgaben die einzige Lösung dar.
Heute bieten MySQL Server und viele andere moderne
Datenbanksysteme eine Vielzahl von Typen für äußere Joins.
MySQL Server unterstützt
DELETE
-Anweisungen über mehrere Tabellen,
die zur effizienten gleichzeitigen Löschung von Datensätzen
basierend auf Daten in einer Tabelle (oder sogar mehreren
Tabellen) benutzt werden. Auch
UPDATE
-Anweisungen über mehrere Tabellen
werden unterstützt.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.