删除数据

已完成

正如 INSERT 语句始终将整行添加到表中一样,DELETE 语句将始终删除整行。

使用 DELETE 可删除特定行

DELETE 对一组行进行操作,这些行或者是由 WHERE 子句中的条件定义,或者是在联接中定义。 DELETE 语句中的 WHERE 子句与 SELECT 语句中的 WHERE 子句具有相同结构。

注意

切记,如果 DELETE 不含对应的 WHERE 子句,则将删除表中的所有行。 谨慎使用 DELETE 语句。

以下代码演示 DELETE 语句的基本语法:

DELETE [FROM] <TableName>
WHERE <search_conditions>;

以下示例使用 DELETE 语句从已停用的指定表中删除所有产品。 表中有一个名为 discontinued 的列,表示不再可用的产品,该列的值为 1。

DELETE FROM Production.Product
WHERE discontinued = 1;

使用 TRUNCATE TABLE 可删除所有行

不带 WHERE 子句的 DELETE 将删除表中的所有行。 因此,DELETE 通常有条件地使用,在 WHERE 子句中包含筛选器。 如果确实想要删除所有行并保留空表,则可以使用 TRUNCATE TABLE 语句。 此语句不允许 WHERE 子句,并且在一个操作中删除所有行。 下面是一个示例:

TRUNCATE TABLE Sales.Sample;

如果要删除所有行,TRUNCATE TABLE 比 DELETE 更高效。