简单的 DELETE 语句格式如下:
DELETE [ FROM ] table-name WHERE column-name = expression
您也可以使用更复杂的格式,如下所示
DELETE [ FROM ] table-name FROM table-list WHERE search-condition
使用 WHERE 子句指定要删除的行。如果未出现任何 WHERE 子句,则 DELETE 语句将删除表中所有的行。
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 中编辑结果集。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |