Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 添加、更改和删除数据

 

使用 DELETE 删除数据

简单的 DELETE 语句格式如下:

DELETE [ FROM ] table-name 
WHERE column-name = expression

您也可以使用更复杂的格式,如下所示

DELETE [ FROM ] table-name 
FROM table-list 
WHERE search-condition
WHERE 子句

使用 WHERE 子句指定要删除的行。如果未出现任何 WHERE 子句,则 DELETE 语句将删除表中所有的行。

FROM 子句

DELETE 语句第二个位置上的 FROM 子句是一个特殊的功能,允许您从一个或多个表中选择数据,然后从指定的第一个表中删除相应的数据。在 FROM 子句中选择的行指定删除条件。请参见DELETE 语句

示例

本示例使用 SQL Anywhere 示例数据库。为了执行示例中的语句,应将选项 wait_for_commit 设置为 On。以下语句只为当前连接执行此操作:

SET TEMPORARY OPTION wait_for_commit = 'On';

这允许您删除某些行,即使这些行包含被外键引用的主键,但是除非将相应的外键也删除,否则不允许执行 COMMIT。

以下视图显示产品和已售出的产品的价值:

CREATE VIEW ProductPopularity as
SELECT  Products.ID,
   SUM( Products.UnitPrice * SalesOrderItems.Quantity ) 
   AS "Value Sold"
FROM  Products JOIN SalesOrderItems
ON Products.ID = SalesOrderItems.ProductID
GROUP BY Products.ID;

使用此视图,可以从 Products 表中删除销售额小于 $20,000 的那些产品。

DELETE
FROM Products
FROM Products NATURAL JOIN ProductPopularity
WHERE "Value Sold" < 20000;

输入 ROLLBACK 语句取消对数据库的这些更改:

ROLLBACK;
提示

还可以根据 Interactive SQL 结果集从数据库表中删除行。请参见在 Interactive SQL 中编辑结果集


从表中删除所有行