当前位置: 首页 > ai >正文

什么是数据库的DDL和DML,有什么区别?

数据库中的 DDL 和 DML 是两类不同的 SQL 语言,用于不同的数据库操作目的。以下是它们的定义、区别和具体说明:


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

作用:定义或修改数据库的结构(如创建、删除、修改表、索引、视图等)。
核心命令

  • CREATE:创建数据库对象(如表、索引)。
  • ALTER:修改现有数据库对象的结构(如添加列)。
  • DROP:删除数据库对象(如删除表)。
  • TRUNCATE:清空表数据(保留表结构,属于 DDL,而非 DML)。
  • RENAME:重命名对象(如表名)。

特点

  • 直接操作数据库的元数据(metadata)。
  • 自动提交(执行后立即生效,无法回滚)。
  • 通常需要较高权限(如管理员权限)。

示例

CREATE TABLE Students (id INT PRIMARY KEY,name VARCHAR(50)
);ALTER TABLE Students ADD COLUMN age INT;

2. DML(Data Manipulation Language,数据操作语言)

作用:对数据库中的数据进行增删改查操作。
核心命令

  • SELECT:查询数据。
  • INSERT:插入新数据。
  • UPDATE:修改现有数据。
  • DELETE:删除数据。

特点

  • 操作的是表中的具体数据(记录)。
  • 可通过事务(COMMIT/ROLLBACK)控制操作的提交或回滚。
  • 普通用户通常具有 DML 权限。

示例

INSERT INTO Students (id, name) VALUES (1, 'Alice');
UPDATE Students SET age = 20 WHERE id = 1;
DELETE FROM Students WHERE id = 1;

3. DDL 与 DML 的主要区别

对比项DDLDML
操作对象数据库结构(表、索引等)表中的数据(记录)
核心命令CREATE, ALTER, DROPSELECT, INSERT, UPDATE, DELETE
事务支持自动提交,无法回滚支持事务(可提交或回滚)
执行速度较慢(涉及结构变更)较快(仅操作数据)
权限要求通常需要管理员权限普通用户通常可执行

4. 常见误区

  • TRUNCATE 是 DDL:虽然它清空数据,但通过删除并重建表实现,属于 DDL,而非 DML。
  • SELECT 属于 DML:尽管它不修改数据,但因其属于数据操作范畴,归类为 DML。

5. 总结

  • DDL 定义数据库的“骨架”(结构),直接修改元数据,自动提交。
  • DML 操作数据库的“血肉”(数据),支持事务,可灵活控制提交或回滚。

理解两者的区别有助于合理设计数据库操作流程和权限管理。

http://www.xdnf.cn/news/1382.html

相关文章:

  • 《多Agent架构VS千万字长文本VS深度推理引擎——拆解Coze、通义、Kimi的AI终局博弈密码》
  • Go语言学习笔记(一)
  • 数据库11(触发器)
  • 智启未来|艾博连科技加入奇瑞雄狮科技LION AI联合实验室
  • VUE3中使用echarts,配置都正确,不出现tooltip
  • 大厂面试-redis
  • 【KWDB 创作者计划】_深度学习篇---向量指令集
  • system verilog 语句 耗时规则
  • 拥抱基因体检,迎接精准健康管理新时代
  • 3.3 技术框架:LangChain、ReAct、Memory与Tool Integration
  • ROS 快速入门教程02
  • (19)VTK C++开发示例 --- 分隔文本读取器
  • Kafka 详解
  • 服务器上安装jdk
  • Android Cordova 开发 - Cordova 快速入门(Cordova 环境配置、Cordova 第一个应用程序)
  • SQL Server 2022 常见问题解答:从安装到优化的全场景指南
  • Linux部署Web程序
  • openharmony5.0.0中C++公共基础类测试-线程相关(一)
  • 【项目篇】仿照RabbitMQ模拟实现消息队列
  • .NET、java、python语言连接SAP系统的方法
  • 音视频小白系统入门课-4
  • 个人mysql学习笔记
  • python中 zip的用法
  • 汽车免拆诊断案例 | 2016款奔驰C200L车组合仪表上多个故障灯偶尔点亮
  • 管理100个小程序-很难吗
  • JavaScript性能优化实战(3):内存管理与泄漏防范
  • Rust 学习笔记:Rust 简介
  • 四川气象数据智能体示范应用入围中国信通院“开源大模型+”案例
  • 数据结构手撕--【栈和队列】
  • fpga系列 HDL:跨时钟域同步 脉冲展宽同步 Pulse Synchronization