Löscht Zeilen aus der Datenbank.
DELETE [ row-limitation ] [ FROM ] [ owner.]table-or-view [ [ AS ] correlation-name ] [ WHERE search-condition ] [ ORDER BY { expression | integer } [ ASC | DESC ], ... ] [ OPTION( query-hint, ... ) ]
DELETE [ row-limitation ] [ FROM ] [ owner.]table-or-view [ [ AS ] correlation-name ] [ FROM table-expression ] [ WHERE search-condition ] [ ORDER BY { expression | integer } [ ASC | DESC ], ... ] [ OPTION( query-hint, ... ) ]
table-or-view : identifier
row-limitation : FIRST | TOP { ALL | limit-expression } [ START AT startat-expression ] limit-expression : simple-expression startat-expression : simple-expression simple-expression : integer | variable | ( simple-expression ) | ( simple-expression { + | - | * } simple-expression )
query-hint : MATERIALIZED VIEW OPTIMIZATION option-value | FORCE OPTIMIZATION | FORCE NO OPTIMIZATION | option-name = option-value
table-expression: Ein vollständiger Tabellenausdruck, der Joins enthalten kann. Siehe FROM-Klausel.
option-name : Bezeichner
option-value : host-variable (Bezeichner zulässig) | string | identfier | number
Zeilenbeschränkungsklausel Die Zeilenbeschränkungsklausel ermöglicht es Ihnen, die zu löschenden Zeilen auf eine Teilmenge der Zeilen zu beschränken, die von der WHERE-Klausel erfasst werden. Die Argumente TOP und START AT können einfache arithmetische Ausdrücke über Hostvariablen, Ganzzahlkonstanten oder Ganzzahlvariablen sein. Das TOP-Argument muss jedoch mit einem Wert größer oder gleich 0 ausgewertet werden. Das START AT-Argument mit einem Wert größer als 0 ausgewertet werden. Wenn diese Klauseln angegeben werden, ist auch eine ORDER BY-Klausel erforderlich, um die Zeilen sinnvoll zu ordnen.
FROM-Klausel Die FROM-Klausel gibt die Tabelle an, aus der die Zeilen gelöscht werden sollen. Bei Syntax 2 bestimmt die zweite FROM-Klausel in der DELETE-Anweisung die Zeilen, die auf der Grundlage von Joins mit anderen Tabellen aus der angegebenen Tabelle gelöscht werden sollen. table-expression kann beliebig komplexe Tabellenausdrücke enthalten, einschließlich abgeleiteter Tabellen sowie KEY- und NATURAL-Joins.
Die folgenden Beispiele veranschaulichen, wie Korrelationsnamen bei Syntax 2 abgeglichen werden. Mit dieser Anweisung:
DELETE FROM table_1 FROM table_1 AS alias_1, table_2 AS alias_2 WHERE ... |
Die Tabelle table_1 hat keinen Korrelationsnamen in der ersten FROM-Klausel, wohl aber in der zweiten FROM-Klausel. In diesem Fall wird Tabelle_1 in der ersten Klausel mit Alias_1 in der zweiten Klausel identifiziert: es gibt nur eine Instanz von Tabelle_1 in dieser Anweisung. Hierbei handelt es sich um eine zulässige Ausnahme der allgemeinen Regel, dass dort, wo eine Tabelle mit einem Korrelationsnamen in derselben Anweisung identifiziert wird, zwei Instanzen der Tabelle berücksichtigt werden.
Im folgenden Beispiel gibt es aber zwei Instanzen von table_1 in der zweiten FROM-Klausel. Die Anweisung schlägt mit einem Syntaxfehler fehl, da es unklar ist, welche Instanz von table_1 in der zweiten FROM-KLausel mit der ersten Instanz von table_1 in der ersten FROM-Klausel übereinstimmt.
DELETE FROM table_1 FROM table_1 AS alias_1, table_1 AS alias_2 WHERE ... |
WHERE-Klausel Die DELETE-Anweisung löscht alle Zeilen, welche die Bedingungen in der WHERE-Klausel erfüllen. Wenn keine WHERE-Klausel angegeben ist, werden alle Zeilen der benannten Tabelle gelöscht. Wenn eine zweite FROM-Klausel vorliegt, qualifiziert die WHERE-Klausel die Zeilen im table-expression dieser zweiten FROM-Klausel.
ORDER BY-Klausel Gibt die Sortierreihenfolge für die zu löschenden Zeilen an. Normalerweise spielt die Reihenfolge, in der Zeilen aktualisiert werden, keine Rolle. In Verbindung mit der FIRST- oder TOP-Klausel kann die Reihenfolge jedoch wichtig sein.
Sie können Spalten-Ordinalnummern in der ORDER BY-Klausel nicht verwenden.
Jedes Element in der ORDER BY-Liste kann als ASC für aufsteigende Sortierfolge (Standardwert) oder DESC für absteigende Sortierfolge benannt werden.
OPTION-Klausel Verwenden Sie diese Klausel, um Hints für das Ausführen der Anweisung anzugeben. Die folgenden Hints werden unterstützt:
OPTION( isolation_level = ... )
im Abfragetext Vorrang vor allen anderen Festlegungen der Isolationsstufe für eine Abfrage hat.
Durch das Löschen großer Datenmengen mit der DELETE-Anweisung werden die Spaltenstatistiken aktualisiert.
Wenn Sie alle Zeilen einer Tabelle löschen möchten, sollten Sie die effizientere TRUNCATE TABLE-Anweisung verwenden.
DELETE-Vorgänge können in Ansichten ausgeführt werden, wenn die Abfragespezifikation, die die Ansicht definiert, aktualisierbar ist. Eine Ansicht ist unter der Voraussetzung aktualisierbar, dass die definierende SELECT-Anweisung nur eine Tabelle in der FROM-Klausel enthält, keine DISTINCT-Klausel, GROUP BY-Klausel, WINDOW-Klausel, oder Aggregatfunktion enthält sowie keine Mengenoperatoren wie UNION oder INTERSECT erfordert.
DELETE-Berechtigung ist für die Tabelle erforderlich.
Keine.
SQL/2008 Syntax 1 ist eine Kernfunktion des SQL/2008-Standards, Syntax 2 dagegen eine Transact-SQL-Erweiterung des Herstellers. Die folgenden Funktionen von Syntax 1 sind Erweiterungen des Herstellers:
Das optionale FROM Schlüsselwort.
Die row-limitation-Klausel und die ORDER BY-Klausel.
Die OPTION-Klausel.
Alle Daten vor 2000 werden aus der Tabelle FinancialData entfernt.
DELETE FROM FinancialData WHERE Year < 2000; |
Die ersten 10 Aufträge werden aus der Tabelle SalesOrderItems entfernt, wenn das Lieferdatum älter als 2001-01-01 ist und sie aus dem Gebiet "Central" stammen.
DELETE TOP 10 FROM SalesOrderItems FROM SalesOrders WHERE SalesOrderItems.ID = SalesOrders.ID and ShipDate < '2001-01-01' and Region ='Central' ORDER BY ShipDate ASC; |
Abteilung 600 wird aus der Datenbank entfernt, wobei die Anweisung auf Isolationsstufe 3 ausgeführt wird.
DELETE FROM Departments WHERE DepartmentID = 600 OPTION( isolation_level = 3 ); |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |