sql >> Databasteknik >  >> RDS >> Mysql

SQL DELETE-syntax – listad av DBMS

Den här artikeln listar SQL DELETE syntax, som implementeras av olika databashanteringssystem (DBMS). Syntaxen är listad exakt som varje leverantör har listat den på sin webbplats. Klicka på den tillämpliga länken för att se mer information om syntaxen för en viss leverantör.

De DBMS som omfattas är MySQL, SQL Server, PostgreSQL och Oracle Database.

MySQL

Från MySQL 5.7 Reference Manual.

Syntax för en tabell:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [PARTITION (partition_name,...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

Syntax för flera tabeller:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
    tbl_name[.*] [, tbl_name[.*]] ...
    FROM table_references
    [WHERE where_condition]

Eller:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
    FROM tbl_name[.*] [, tbl_name[.*]] ...
    USING table_references
    [WHERE where_condition]

SQL-server

Från Transact-SQL-referensen:

[ 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

Från PostgreSQL 9.5-manualen:

[ 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 Database

Från Oracle Database Online Documentation 12c Release 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 } ]

Om DELETE Uttalande

Den DELETE statement är ett datamanipulationsspråk (DML) påstående som tar bort de angivna raderna från en tabell.

Den RADERA uttalande tar bort rader som uppfyller WHERE klausul från den angivna tabellen. Om VAR sats saknas, kommer alla rader i tabellen att raderas och tabellen lämnas tom.

Tips

Den TRUNCATE sats (eller i fallet med SQL Server, TRUNCATE TABLE sats ) liknar DELETE uttalande utan WHERE klausul; dock TRUNCATE är snabbare och använder färre system- och transaktionsloggresurser.


  1. Gruvplaner:Inte bara för planens cache

  2. Skapa åtkomstmeny med kontroll av trädvy

  3. Fixa "Arithmetic overflow-fel vid konvertering av int till datatyp numeric" i SQL Server

  4. MySQL - hur många rader kan jag infoga i en enda INSERT-sats?