Dies löscht den Inhalt der gesamten angegebenen Tabelle. Die Tabelle
selbst wird nicht gelöscht, das Ergebnis ist eine leere Tabelle.
DELETE FROM <Tabelle>
WHERE <Bedingung>
Dies löscht alle Zeilen der Tabelle, für welche die Bedingung zutrifft.
DELETE FROM <Tabelle>
FROM <Tabelle> [[INNER | LEFT | RIGHT] JOIN] <Tabelle>
ON <JOIN-Bedingung> [weitere JOIN-Klauseln]
WHERE <Bedingung>
Diese ANSI- bzw. Ms-SqlServer-Syntax ermöglicht, analog zur UPDATE-Klausel,
das Festlegen weiterer Kriterien zur Auswahl der zu löschenden Zeilen. Nur jene Zeilen, welche den Verknüpfungsbedingungen
der JOIN-Klausel entsprechen, werden gelöscht.
Beispiele
Vorbemerkung: Wenn Sie die folgenden Beispiele mit dem Sql-interaktiv-lernen testen wollen, dann erstellen Sie sich am besten mit
Select * Into <neue-Tabelle> From Artikel einige neue Tabellen, welche Sie zum Löschen
verwenden. Dies erspart Ihnen das ständige Neueingeben der Daten bzw. das Zurückkopieren der gesicherten Access-Datenbank.
DELETE FROM ARTIKEL
Dies löscht alle Zeilen der Tabelle Artikel.
DELETE FROM ARTIKEL
WHERE A_NR = 11
Dies löscht nur die Zeile mit der Artikel-Nummer 11.
DELETE FROM UMSATZ
FROM UMSATZ As U INNER JOIN ARTIKEL As A
On U.A_NR = A.A_NR
WHERE A_NR = 11
Dies löscht in der Tabelle UMSATZ alle Zeilen, welche sich auf den Artikel 11 beziehen.
DELETE FROM UMSATZ
FROM ARTIKELAs A INNER JOIN UMSATZ As U
ON A.A_NR = U.A_NR INNER JOIN
(SELECT B.A_NR,
MAX(B.A_PREIS * C.A_STUECK) As Maximum
FROM Artikel As B Inner Join Umsatz As C
On B.A_Nr = C.A_Nr
Group By B.A_NR) As D
On U.A_NR = D.A_NR And A.A_PREIS * U.A_STUECK < D.Maximum
Diese nur noch auf ANSI-kompatiblen DBMS funktionierende Beispiel bestimmt zunächst über die Unterabfrage zu jeder Artikelnummer
den höchsten Einzelumsatz. Die JOIN-Anweisung verknüpft diese aus zwei Spalten und vier Zeilen bestehende Tabelle mit den beiden
anderen Tabellen, so daß zunächst die Artikelnummern einander zugeordnet sind und zusätzlich alle Zeilen ausgewählt werden,
deren Produkt aus A_Preis und A_Stueck kleiner dem Maximum für diesen Artikel ist. Diese Zeilen werden gelöscht.
Für das folgende Beispiel fügen Sie zunächst in die Tabelle ARTIKEL einen neuen Artikel ein. Da eine JOIN-Klausel
genutzt wird, gelingt dies nicht mit Ms-Access bzw. dem Sql-interaktiv. Dort müssen Sie sich mit der korrespondierenden SELECT-Klausel
begnügen.
INSERT INTO ARTIKEL (A_NR, A_NAME, A_PREIS)
VALUES(55, 'Jeans', 99.90)
Mit diesem Artikel ist kein Umsatz gemacht worden, er soll deshalb gelöscht werden.
DELETE FROM ARTIKEL
FROM ARTIKEL As A LEFT JOIN UMSATZ As U
On A.A_NR = U.A_NR
WHERE U.UMSATZ_NR IS NULL
Bemerkungen
Ersetzen Sie bei komplexen Anweisungen mit eigenständigem FROM-Abschnitt zunächst die erste Zeile
'DELETE FROM <Tabelle>' durch 'SELECT *'. Damit werden Ihnen alle Zeilen ausgegeben, die als Kandidaten zum
Löschen ausgewählt werden.
Wird eine interaktive Umgebung genutzt, die Transaktionen unterstützt, dann läßt sich das Testen von DELETE-Befehlen
vereinfachen. Vor dessen Ausführung wird eine Transaktion gestartet, dann der Löschbefehl ausgeführt und das Ergebnis
anschließend mit einer SELECT-Abfrage überprüft. Am Ende wird die Transaktion per RollBack wieder zurückgesetzt, so daß
keine Änderungen an den Tabellen gespeichert werden.
Wenn Sie mit dem OSql.exe interaktiv eine DosBox geöffnet haben, so können Sie schrittweise die folgenden Zeilen aus dem
linken Fenster eingeben und jeweils anschließend mit Return bestätigen.
Begin Transaction
go
Select * From Umsatz
go
Delete From Umsatz Where A_Nr < 13
go
Select * From Umsatz
go
RollBack Transaction
go
Select * From Umsatz
Transaktion starten
Ausgabe von 9 Zeilen
Löschen aller Zeilen mit A_Nr < 13
Ausgabe 4 Zeilen
Transaktion zurücksetzen
Ausgabe von wieder 9 Zeilen
Link zur hiesigen Seite als QR-Code
Kontaktformular:
Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!
Mit dem Klick auf den Button stimmen Sie zu, daß Cookies in Ihrem Browser gespeichert werden. Informationen zu den gespeicherten Cookies finden Sie unter Datenschutz#Cookies.Bei Fragen zur Technik wenden Sie sich bitte an Server-Daten - Web-Datenbank-Lösungen