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 命令影响的行数。
- 数据删除后将无法恢复,因此强烈建议在删除数据前进行备份。