Collection Contents 上一页 下一页 PDF

ASA SQL 参考

SQL 语句

DELETE 语句


说明 

此语句用于从数据库中删除行。

语法 

DELETE [ FIRST | TOP n ]
FROM ] [ owner.]table-name
FROM table-list ]
WHERE search-condition ]

用法 

DELETE 语句删除指定表中所有满足搜索条件的行。如果没有指定 WHERE 子句,则删除指定表中的所有行。

如果定义视图的 SELECT 语句的 FROM 子句中只有一个表并且不包含 GROUP BY 子句、集合函数或 UNION 操作,则可以在视图上使用 DELETE 语句。

DELETE 语句中可选的第二个 FROM 子句允许基于连接删除行。如果存在第二个 FROM 子句,则 WHERE 子句限定第二个 FROM 子句的行。第一个 FROM 子句给定的表中的行将被删除。

第二个 FROM 子句可以包含任意复杂表的表达式(比如 KEY 和 NATURAL 连接)。有关 FROM 子句和连接的完整说明,请参见 FROM 子句

下面的语句阐释 DELETE 语句(有两个使用相关名的 FROM 子句)的表名中潜在的不明确性:

DELETE
FROM table_1
FROM table_1 AS alias_1, table_2 AS alias_2
WHERE ...

表 table_1 不以第一个 FROM 子句中的相关名标识,而是以第二个 FROM 子句中的相关名标识。在本例中,第一个子句中的 table_1 以第二个子句中的 alias_1 标识:此语句中只有一个 table_1 实例。

这是一般规则的特例,即一个表在同一语句中的两个实例,一次用相关名标识另一次没有相关名。

请看下面的示例:

DELETE
FROM table_1
FROM table_1 AS alias_1, table_1 AS alias_2
WHERE ...

在本例中,第二个 FROM 子句有两个 table_1 实例。此语句会因语法错误而失败,因为不明确第二个 FROM 子句中的哪个 table_1 实例与第一个 FROM 子句中的第一个 table_1 实例匹配。

使用 DELETE 语句删除大量数据也会更新列的统计信息。

权限 

必须有表的 DELETE 权限。

副作用 

无。

另请参见 
标准和兼容性 
示例 

将 ID 为 105 的雇员从数据库中删除。

DELETE
FROM employee
WHERE emp_id = 105

fin_data 表中删除 2000 年之前的所有数据。

DELETE
FROM fin_data
WHERE year < 2000

sales_order_items 表中删除所有订单,如果订单的发货日期早于 2001 年 1 月 1 日并且它们的地区是 Central。

DELETE
FROM sales_order_items
FROM sales_order
WHERE sales_order_items.id = sales_order.id
  and ship_date < '2001-01-01' and region ='Central'

Collection Contents 上一页 下一页 PDF