一文分清 DDL 和 DML!别再把 “改结构” 和 “改数据” 搞混了

DML(数据操作语言)和 DDL(数据定义语言)是 SQL 语言的两大核心分类,核心区别在于操作对象、目的、事务特性、执行结果 等维度,下面通过「核心对比+详细解析+示例」的方式清晰说明:

一、核心区别总览表

维度DDL(数据定义语言)DML(数据操作语言)
操作对象数据库、表、索引、视图等「数据库对象的结构」表中的「数据行/记录」
核心目的定义/修改/删除数据库对象的结构增删改查数据库中的数据
事务特性自动提交(不可回滚,除非数据库支持 DDL 回滚)可手动提交/回滚(默认事务未提交可撤销)
锁机制锁整个对象(如锁表),影响范围大锁数据行/页,影响范围小
常见命令CREATE、ALTER、DROP、TRUNCATE、RENAME 等INSERT、UPDATE、DELETE、SELECT 等
执行后影响改变数据库/表的结构(如新增列、删除表)改变表中的数据(如新增行、修改字段值)
是否依赖事务不依赖,执行即生效依赖事务(可通过 COMMIT/ROLLBACK 控制)

二、详细解析

1. DDL(Data Definition Language):数据定义语言

聚焦于「数据库对象的结构」,相当于“搭建数据库/表的骨架”,操作后会直接修改数据库的元数据(描述数据的数据)。

核心特点

  • 操作不可逆(多数数据库中,DDL 执行后自动提交,无法用 ROLLBACK 回滚,比如 DROP TABLE 删表后数据和结构都消失);
  • 执行时会锁定整个对象(比如 ALTER TABLE 时,表会被锁定,其他操作无法访问);
  • 影响数据库的“结构”,而非“内容”。

常见命令及示例

命令作用示例
CREATE创建数据库对象CREATE TABLE user (id INT, name VARCHAR(20));
ALTER修改数据库对象结构ALTER TABLE user ADD age INT;(新增age列)
DROP删除数据库对象DROP TABLE user;(删除user表)
TRUNCATE清空表数据(保留结构)TRUNCATE TABLE user;(比DELETE快,不可回滚)
RENAME重命名数据库对象RENAME TABLE user TO t_user;
2. DML(Data Manipulation Language):数据操作语言

聚焦于「表中的数据」,相当于“给骨架填肉/修改肉”,只操作数据行,不改变表的结构。

核心特点

  • 操作可回滚(在事务未提交前,用 ROLLBACK 撤销操作,比如误删数据可回滚);
  • 执行时仅锁定涉及的数据行(比如 UPDATE 只锁被修改的行,不影响其他行);
  • 影响数据库的“内容”,而非“结构”。

常见命令及示例

命令作用示例
INSERT插入数据INSERT INTO user (id, name) VALUES (1, ‘张三’);
UPDATE修改数据UPDATE user SET age = 20 WHERE id = 1;
DELETE删除数据(保留结构)DELETE FROM user WHERE id = 1;(可回滚)
SELECT查询数据SELECT * FROM user WHERE id = 1;

注意:SELECT 常被单独归为 DQL(数据查询语言),但广义上仍属于 DML 范畴。

三、关键补充

  1. TRUNCATE vs DELETE
    • TRUNCATE 是 DDL,快速清空表(不记录行级日志),不可回滚,会重置自增主键;
    • DELETE 是 DML,逐行删除(记录日志),可回滚,不重置自增主键。
  2. DDL 回滚特例
    部分数据库(如 Oracle、PostgreSQL)支持在事务中执行 DDL,且未提交前可回滚;但 MySQL 中 DDL 执行即自动提交,无法回滚。
  3. 性能差异
    DDL 操作通常耗时更长(需修改结构+锁对象),DML 操作(除全表扫描)性能更优。

四、总结

  • 记结构:DDL 管“骨架”(表/库结构),CREATE/ALTER/DROP 是核心;
  • 记数据:DML 管“内容”(表中数据),INSERT/UPDATE/DELETE/SELECT 是核心;
  • 记事务:DDL 自动提交,DML 可回滚(核心区分点)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值