使用 DELETE 语句删除行

DELETE 语句可删除表或视图中的一行或多行。DELETE 语法的简化形式为:

DELETE table_or_view FROM table_sources WHERE search_condition

table_or_view 指定要从中删除行的表或视图。table_or_view 中所有符合 WHERE 搜索条件的行都将被删除。如果没有指定 WHERE 子句,将删除 table_or_view 中的所有行。FROM 子句指定删除时用到的额外的表或视图及联接条件,WHERE 子句搜索条件中的谓词使用它们限定要从 table_or_view 中删除的行。该语句不从 FROM 子句指定的表中删除行,而只从 table_or_view 指定的表中删除行。

任何已删除所有行的表仍会保留在数据库中。DELETE 语句只从表中删除行,要从数据库中删除表,必须使用 DROP TABLE 语句。

使用 DELETE 语句删除行

Transact-SQL

对于 Northwind 数据库中名为 Lyngbysild 的公司所提供的产品,以下脚本显示了删除与这些产品有关的行时所需要的三个 DELETE 语句。因为该脚本涉及了从现有订单中删除行,所以它不是一个典型的商业操作,但是它确实显示了一系列复杂程度不同的删除操作。


USE Northwind
GO
DELETE [Order Details]
FROM Suppliers, Products
WHERE Products.SupplierID = Suppliers.SupplierID
  AND Suppliers.CompanyName = 'Lyngbysild'
  AND [Order Details].ProductID = Products.ProductID
GO
DELETE Products
FROM Suppliers
WHERE Products.SupplierID = Suppliers.SupplierID
  AND Suppliers.CompanyName = 'Lyngbysild'
GO
DELETE Suppliers
WHERE CompanyName = 'Lyngbysild'
GO