MySQL DELETE 查询:如何从表中删除一行

DELETE 查询是什么?

MySQL DELETE 命令用于从数据库表中删除不再需要的行。它会删除表中的整行并返回已删除的行数。Delete 命令可以方便地从数据库中删除临时或过时的数据。

MySQL 中的 Delete 查询可以在单个查询中从表中删除多行。这在从数据库表中删除大量行时非常有用。

一旦 MySQL 中的 Delete 行被删除,就无法恢复。因此,强烈建议在从数据库中删除任何数据之前进行数据库备份。这样,如果需要,您可以稍后恢复数据库并查看数据。

如何在 MySQL 中删除一行

要删除 MySQL 中的一行,请使用 DELETE FROM 语句。

DELETE FROM `table_name` [WHERE condition];

HERE

  • DELETE FROM `table_name` 告诉 MySQL 服务器从表中删除行……
  • [WHERE condition] 是可选的,用于放置一个限制 DELETE 语法 MySQL 行查询所影响行数的过滤器。

如果 WHERE 子句 未在 MySQL DELETE 查询 中使用,则给定表中的所有行都将被删除。

MySQL Delete 查询示例

在我们更详细地讨论 SQL DELETE 语句之前,让我们向 movies 表中插入一些示例数据来操作。

INSERT INTO  `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO  movies (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

执行上述脚本将在 movies 表中添加三 (3) 部电影。在我们继续学习之前,让我们获取表中所有的电影。下面显示的脚本会做到这一点。

SELECT * FROM `movies`;

执行上述脚本会得到以下结果。

movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% Guilty NULL 2012 NULL
18 The Great Dictator Chalie Chaplie 1920 7
19 sample movie Anonymous NULL 8
20 movie 3 John Brown 1920 8

假设 Myflix 视频库不再希望向其会员出租“The Great Dictator”,并且他们希望将其从数据库中删除。其电影 ID 为 18,我们可以使用下面显示的脚本从表中删除 MySQL 示例。

DELETE FROM `movies` WHERE `movie_id` = 18;

MySQL WorkBench 中执行上述脚本,针对 Myflix,将从数据库表中删除 ID 为 18 的电影。

让我们看看 movies 表的当前状态。

SELECT * FROM `movies`;
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% Guilty NULL 2012 NULL
19 sample movie Anonymous NULL 8
20 movie 3 John Brown 1920 8

注意

  • ID 为 18 的电影未在查询结果集中返回。
  • 您无法删除表中的单个列。您可以删除整行。

假设我们有一份要删除的电影列表。我们可以将 WHERE 子句与 IN 一起使用。

DELETE FROM `movies` WHERE `movie_id`  IN (20,21);

执行上述脚本将从我们的 movies 表中删除 ID 为 20 和 21 的电影。

摘要

  • MySQL 中的 Delete 命令用于从表中删除不再需要的数据。
  • “WHERE 子句”用于限制受 DELETE 查询 MySQL 命令影响的行数。
  • 数据删除后将无法恢复,因此强烈建议在删除数据前进行备份。