关系型数据库使用 DELETE 语句删除

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: `DELETE` SQL 语句用于从关系型数据库表中删除记录。可删除所有记录(如 `DELETE FROM students;`)或依据条件(如 `DELETE FROM students WHERE age > 25;`)。某些数据库支持使用 `OUTPUT` 或 `RETURNING` 子句返回被删除记录。还能通过子查询(如基于 `failed_exams` 删除 `students` 表记录)及触发器配合执行。注意,`DELETE` 在事务中执行,需谨慎操作并确保数据备份。

在关系型数据库中,DELETE 语句用于从表中删除记录。当你想要从表中移除某些行时,你可以使用 DELETE 语句。

以下是一些基本的 DELETE 语句的示例和使用方法:

  1. 删除所有记录

如果你想要删除表中的所有记录,你可以使用以下语句:

DELETE FROM 表名;

例如,如果你有一个名为 students 的表,并想要删除其中的所有记录,你可以执行:

DELETE FROM students;

注意:这将删除表中的所有记录,但不会删除表本身。而且,这个操作是不可逆的,所以在执行之前请确保你真的想要删除所有的数据。

  1. 根据条件删除记录

如果你只想删除满足某些条件的记录,你可以在 DELETE 语句中使用 WHERE 子句。例如,如果你只想删除 students 表中所有年龄超过 25 的学生,你可以执行:

DELETE FROM students WHERE age > 25;
  1. 删除并返回被删除的记录

某些数据库(如 MySQL)支持在 DELETE 语句中使用 OUTPUT 子句(或在某些数据库中是 RETURNING 子句)来返回被删除的记录。但这并不是所有数据库都支持的功能。如果你的数据库支持这个功能,你可以这样使用:

DELETE FROM students OUTPUT deleted.* WHERE age > 25;

或者在某些数据库中:

DELETE FROM students RETURNING * WHERE age > 25;
  1. 使用子查询删除记录

你还可以使用子查询来确定哪些记录应该被删除。例如,假设你有一个 failed_exams 表,其中列出了所有未通过考试的学生ID。你可以基于这个表来删除 students 表中的相应记录:

DELETE FROM students WHERE student_id IN (SELECT student_id FROM failed_exams);
  1. 删除并触发触发器

如果你在表中定义了触发器,并且当某些记录被删除时想要执行某些操作,那么当你使用 DELETE 语句删除记录时,这些触发器将被触发。

  1. 注意事务

如果你正在使用事务(transaction),请注意 DELETE 语句是在事务的上下文中执行的。这意味着,除非你提交事务,否则 DELETE 的效果不会永久保存。同样,如果事务被回滚,那么 DELETE 语句所做的更改将被撤销。

最后,执行 DELETE 语句时请谨慎,确保你真的想要删除这些记录,并且已经备份了任何重要的数据。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
12月前
|
SQL 存储 数据库
sql数据库中的 delete 与drop的区别
sql数据库中的 delete 与drop的区别
235 1
|
4月前
|
存储 SQL 监控
关系型数据库. 基本的DELETE语句
`SQL DELETE` 语句用于从表中删除记录,基本格式为 `DELETE FROM 表名 WHERE 条件`。`WHERE` 子句可选,指定删除特定记录。例如,`DELETE FROM students WHERE age > 20;` 将删除年龄大于 20 的学生。执行前注意备份,总是使用 `WHERE` 子句以避免误删,并考虑在事务中执行以保证数据安全。大量删除可能影响性能,需谨慎操作。还要留意可能存在的触发器影响。
47 2
|
1月前
|
SQL 安全 关系型数据库
关系型数据库SQL server DELETE 语句
【8月更文挑战第3天】
59 10
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
3月前
|
关系型数据库 MySQL 数据库
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
【MySQL】MySQL数据库的delete from table和truncate table之间的区别
269 1
|
3月前
|
关系型数据库 MySQL 数据库
MySQL数据库——触发器-案例(Insert类型、Update类型和Delete类型)
MySQL数据库——触发器-案例(Insert类型、Update类型和Delete类型)
47 0
|
4月前
|
存储 关系型数据库 MySQL
Mysql数据库清空表 truncate和delete
Mysql数据库清空表 truncate和delete
68 0
|
4月前
|
数据库
SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突
SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突
|
编解码 数据库 Python
pycharm文件位置,数据库–关于truncate和delete的区别,deletewith open()的使用方法
pycharm文件位置,数据库–关于truncate和delete的区别,deletewith open()的使用方法
127 1
|
SQL 存储 数据库
sql数据库中的 delete 与drop的区别
sql数据库中的 delete 与drop的区别
216 0