在SQL中删除一行

就像向数据库中添加新数据一样,从数据库中删除数据也很常见,尤其是在清理数据库表时。

在本教程中,我们将探讨可用于从给定数据库表中删除一行或多行的各种方法和技术。

示例数据设置

让我们从创建和设置一个表开始,我们可以将其用于演示。请随意使用您认为合适的任何数据库。

注意:本教程中讨论的方法是破坏性的,将永久地从表中删除数据。确保对数据库进行了备份,不要在生产数据库中使用这些方法。

对于我们的示例,让我们创建一个表来存储博客信息。考虑以下查询示例:

创建表

post_id INT主键AUTO_INCREMENT,

标题VARCHAR (255),

内容的文本,

author_id INT,

created_at时间戳

);

插入



blog_posts(标题、

内容,

author_id,

created_at)



(《SQL入门》,

这是一篇关于SQL的博文。

101年,

“2023-01-15 10:00:00”),

('SQL join Explained',

'了解不同的SQL连接',

102年,

“2023-02-20 14:30:00”),

(“SQL索引技术”,

使用索引优化数据库性能

101年,

“2023-03-10 09:45:00”),

(“SQL最佳实践”,

编写高效SQL查询的技巧

103年,

“2023-04-05 16:20:00”);

给定的查询应该创建一个名为“blog_post”的基本表,并向其中填充一些数据。我们使用这个表来说明如何从表中删除行。

方法一:SQL Delete语句

让我们从一个古老但很好的例子开始。在SQL中,我们可以使用DELETE语句从给定表中删除一行或多行。我们通过指定表名和添加WHERE子句来指定我们希望删除的实际行来实现这一点。

例如,假设我们想要删除“post_id”等于2的行。我们可以这样运行查询:

DELETE FROM post_id = 2;

这将删除“post_id”等于2的行。

方法二:SQL Delete with Subquery

在某些情况下,可能需要根据另一个表的条件删除行。这就是子查询发挥作用的地方。

假设我们有另一个包含作者信息的表。我们可以根据“authors”表中的特定作者从“blog_posts”表中删除一篇文章,如下所示:

删除



blog_posts

在哪里

author_id IN (

选择

author_id



作者

在哪里

author_name = 'Linuxhint ';

在本例中,我们首先使用SQL子查询查找对应的“author_id”,从而删除名称等于“linuxhint”的作者的所有帖子。

结论

在本教程中,我们学习了如何使用delete语句和SQL子查询从给定的数据库表中删除一行或多行。