如何在 SQL 中从表中删除数据:SQL 查询 DELETE FROM WHERE
SQL SQL学习示例:如何编写SQL命令以从数据库表中删除行?
我用简单的语言解释SQL行的删除,如何删除SQL记录,没有多余的细节。DELETE FROM WHERE语句很简单!它适用于MySQL、PostgresQL、MS SQL、SQLite、Oracle、MariaDB等SQL数据库管理系统。
使用SQL删除命令:如何从数据库表中删除数据?
SQL命令 DELETE FROM WHERE 的语法:
DELETE FROM 表名 WHERE 条件;
此SQL查询的字面意思是“从表中删除,符合条件的记录”。
如果您不指定条件,整个表将被清空!
如何根据ID删除SQL记录?
假设我们有一个名为users的用户表,我们想删除ID为10的用户。为什么是id?这是表中每行的唯一编号。
在一个表中不能有多个相同的id,因此知道记录的id,我们可以保证可以获取到该特定记录。
SQL DELETE FROM WHERE ID查询的示例如下:
DELETE FROM users WHERE id = 10;
重要的是要注意,如果id是数字类型,我们不使用引号,否则对于字符串值或UUID则需要用单引号包围它们。
在使用DELETE命令时应特别小心:删除的数据不能通过简单的方法恢复(如果没有备份机制)。因此,在执行查询之前,建议仔细检查它。
如何在SQL中删除多行?使用条件进行大规模删除SQL DELETE
例如,我们想删除所有一年未登录的用户。得益于SQL的丰富语法能力,我们可以使用SQL DATE_SUB检查最后登录日期。查询示例:
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR);
在这个例子中,我们使用SQL函数 DATE_SUB 来计算当前时刻的一年前的日期,这个时间我们通过SQL函数 NOW() 来获取。
SQL DELETE FROM WHERE中的多个条件示例
SQL语法允许我们为更精确地选择应删除的记录设置多个条件。删除在一年内没有登录且状态为“非活动”的用户的SQL查询示例如下:
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)
AND
status = 'inactive';
在SQL中删除数据时使用事务
SQL事务允许您在执行DELETE命令后,如果出现问题,可以回滚所有所做的更改。语法如下:
我们使用BEGIN命令开始事务:
BEGIN;
执行一个或多个操作,例如:
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)
AND
status = 'inactive';
如果命令成功执行且没有错误,您可以继续下一步。
如果所有操作成功完成且您对结果满意,则应使用SQL命令 COMMIT 来结束SQL事务,以保存所有更改:
COMMIT;
但是,如果需要取消更改,我们使用SQL命令 ROLLBACK:
ROLLBACK;
在SQL事务中,如果发生错误,或者如果您对事务内部操作的结果不满意并想要将数据库恢复到事务开始前的状态,则使用 ROLLBACK 命令。
在使用 DELETE 命令时要小心,仔细检查SQL查询,以免删除不应删除的内容。在处理重要数据时,使用SQL事务结构,或在进行DELETE操作之前进行SQL转储。