暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【手写数据库核心揭秘系列】第112节 终于到DELETE命令啦~

开源无限 2025-07-15
62


💻 深耕数据库内核架构设计与开发十余年,曾主导多款高性能分布式数据库内核研发,攻克高并发、低延迟等核心技术难题。现倾力打造《从零手写数据库》系列教程,首次系统性公开数据库内核源码级实现细节!
🚀 从存储引擎、查询优化到分布式事务,手把手拆解核心模块;从语法解析树构建到执行计划生成,逐行代码还原设计精髓
🌟 无论你是数据库开发者、系统架构师,还是对底层技术充满好奇的极客,这里都有你想要的“硬核干货”!点击关注,与行业老兵共同探索数据库技术的星辰大海!
公众号:开源无限

一、概述 


经过前面几章节的介绍,miniToadb已经实现了基础的INSERT、UPDATE和SELECT,还有一个最基本的操作就是删除,将不再需要的数据从数据表中清理。

二、语法介绍 


从数据表中删除数据的语法,它由三部分组成,关键词DELETE、from子句和where子句,其中where子句是可选项。

    delete from table_name where condition

    语法说明:

    • table_name: 指定删除数据对应的数据表名称;
    • condition:筛选条件。

    三、删除方式 


    where子句是可选项,当没有where子句时,表中所有数据行都符合删除条件,即清空数据表。

    因此DELETE命令非常危险,大多数时候只在测试环境中使用,而生产环境中一般会增加一个删除标记字段,

    当需要删除时执行UPDATE命令而非DELETE命令,只是标记删除。当真正要删除时,只需要检索并删除打过标记的数据行。

    四、多表删除 


    仔细观察会发现DELETE命令的目标数据表与UPDATE命令的目标数据表在语法中出现的位置不一样,DELETE命令中是出现在FROM子句中,限定FROM子句只有一个基本数据表,也就是目标数据表。

    如果语法规则这样定义时,DELETE命令只删除一张表中的数据。

    当然一些商业数据库中扩展了标准语法,DELETE关键词后可以有多张目标数据表,这样同时在多张数据表中删除数据行。

    DELETE命令每次只能删除一张表的数据,如何删除多张有关联的数据表中的数据呢?

    这就需要在多个数据表中增加删除字段,通过UPDATE命令将多张表中的数据关联,并将待删除数据行的删除字段打上标记位,再通过DELETE命令逐个表删除。


    🌟 点赞收藏,分享给身边的技术伙伴,关注我们,持续获取数据库内核开发的硬核干货!一起从源码级实现到分布式架构,解锁数据库技术的每一个核心细节!🚀

    【往期精彩推荐】

    【手写数据库核心揭秘系列】第111节 UPDATE更新演示,多表联合的跨表UPDATE,多列赋值的简洁写法

    【手写数据库核心揭秘系列】第99节 多表联合查询演示,高复杂度查询SQL,四张数据表混合联合类型的查询

    【手写数据库内核miniToadb】04我们要做的SQL解析器设计,SQL语法与类型定义,打造属于你的SQL



    文章转载自开源无限,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论