Dieser Artikel listet den SQL DELETE
auf Syntax, wie sie von verschiedenen Datenbankverwaltungssystemen (DBMSs) implementiert wird. Die Syntax wird genau so aufgeführt, wie sie jeder Anbieter auf seiner Website aufgeführt hat. Klicken Sie auf den entsprechenden Link, um weitere Einzelheiten zur Syntax für einen bestimmten Anbieter anzuzeigen.
Die behandelten DBMS sind MySQL, SQL Server, PostgreSQL und Oracle Database.
MySQL
Aus dem MySQL 5.7 Referenzhandbuch.
Syntax für einzelne Tabellen:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROMtbl_name
[PARTITION (partition_name
,...)] [WHEREwhere_condition
] [ORDER BY ...] [LIMITrow_count
]
Syntax für mehrere Tabellen:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]tbl_name
[.*] [,tbl_name
[.*]] ... FROMtable_references
[WHEREwhere_condition
]
Oder:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROMtbl_name
[.*] [,tbl_name
[.*]] ... USINGtable_references
[WHEREwhere_condition
]
SQL-Server
Aus der Transact-SQL-Referenz:
[ WITH <common_table_expression> [ ,...n ] ] DELETE [ TOP ( expression ) [ PERCENT ] ] [ FROM ] { { table_alias | <object> | rowset_function_limited [ WITH ( table_hint_limited [ ...n ] ) ] } | @table_variable } [ <OUTPUT Clause> ] [ FROM table_source [ ,...n ] ] [ WHERE { <search_condition> | { [ CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } } ] [ OPTION ( <Query Hint> [ ,...n ] ) ] [; ] <object> ::= { [ server_name.database_name.schema_name. | database_name. [ schema_name ] . | schema_name. ] table_or_view_name }
PostgreSQL
Aus dem PostgreSQL 9.5-Handbuch:
[ WITH [ RECURSIVE ] with_query [, ...] ] DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ] [ USING using_list ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
Oracle-Datenbank
Aus der Oracle Database Online Documentation 12c Version 1 (12.1):
DELETE [ hint ] [ FROM ] { dml_table_expression_clause | ONLY (dml_table_expression_clause) } [ t_alias ] [ where_clause ] [ returning_clause ] [error_logging_clause];
DML_table_expression_clause::=
{ [ schema. ] { table [ partition_extension_clause | @ dblink ] | { view | materialized view } [ @ dblink ] } | ( subquery [ subquery_restriction_clause ] ) | table_collection_expression }
partition_extension_clause::=
{ PARTITION (partition) | PARTITION FOR (partition_key_value [, partition_key_value]...) | SUBPARTITION (subpartition) | SUBPARTITION FOR (subpartition_key_value [, subpartition_key_value]...) }
subquery_restriction_clause::=
WITH { READ ONLY | CHECK OPTION } [ CONSTRAINT constraint ]
table_collection_expression::=
TABLE (collection_expression) [ (+) ]
where_clause::=
WHERE condition
returning_clause ::=
{ RETURN | RETURNING } expr [, expr ]... INTO data_item [, data_item ]...
error_logging_clause ::=
LOG ERRORS [ INTO [schema.] table ] [ (simple_expression) ] [ REJECT LIMIT { integer | UNLIMITED } ]
Über das DELETE
Erklärung
Das DELETE
-Anweisung ist eine DML-Anweisung (Data Manipulation Language), die die angegebenen Zeilen aus einer Tabelle entfernt.
Das LÖSCHEN -Anweisung löscht Zeilen, die WHERE erfüllen -Klausel aus der angegebenen Tabelle. Wenn das WHERE fehlt, werden alle Zeilen in der Tabelle gelöscht, sodass die Tabelle leer bleibt.
Tipp
Das TRUNCATE
-Anweisung (oder im Fall von SQL Server die TRUNCATE TABLE
-Anweisung ) ähnelt dem DELETE
Anweisung ohne WHERE
Klausel; jedoch TRUNCATE
ist schneller und verbraucht weniger System- und Transaktionsprotokollressourcen.