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

数据库中DDL、DML、DCL的区别是什么?

数据库中DDL、DML、DCL的区别是什么?

在数据库的使用过程中,SQL(结构化查询语言)常常被用来执行不同的操作,主要分为三类:DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)。这三类语言的作用各不相同,在数据库的管理和操作中有着各自独特的职责。本文将深入分析这三类语言的区别与应用。
在这里插入图片描述

一、DDL(数据定义语言)

1. 定义和作用

DDL(Data Definition Language)是用来定义和管理数据库中的数据结构和对象的语言。它主要涉及数据库的创建、修改和删除等操作。通过DDL,数据库管理员(DBA)可以定义表格、索引、视图、存储过程等对象的结构。

2. 常见的DDL语句
  • CREATE:用于创建数据库对象,如数据库、表、视图、索引等。
    • 示例:CREATE TABLE users (id INT, name VARCHAR(50));
  • ALTER:用于修改现有数据库对象的结构。
    • 示例:ALTER TABLE users ADD COLUMN email VARCHAR(100);
  • DROP:用于删除数据库对象,如表、视图、数据库等。
    • 示例:DROP TABLE users;
  • TRUNCATE:用于删除表中的所有数据,但不删除表本身。与DELETE不同,TRUNCATE是不可恢复的。
    • 示例:TRUNCATE TABLE users;
  • COMMENT:用于为数据库对象添加注释。
    • 示例:COMMENT ON COLUMN users.name IS 'User name';
  • REVOKE/GRANT:虽然常用于DCL(数据控制语言),但在某些数据库系统中,它也被归类为DDL操作,用于授予或撤销权限。
    • 示例:GRANT SELECT ON users TO 'user_role';
3. DDL的特征
  • DDL语句通常会直接影响数据库结构,因此执行这些语句时会有“隐式提交”的效果,一旦执行完成,所有的更改都立即生效。
  • DDL操作通常不可回滚(除非使用事务控制的数据库支持回滚)。执行之后的数据和结构会永久改变,除非通过其他手段(如备份恢复)恢复。

二、DML(数据操纵语言)

1. 定义和作用

DML(Data Manipulation Language)用于处理数据库中的数据。DML语句的核心作用是对数据表中的记录进行增、删、改、查等操作。DML操作允许用户与数据交互、插入新数据、更新现有数据以及删除数据等。

2. 常见的DML语句
  • SELECT:用于从数据库中查询数据。
    • 示例:SELECT * FROM users;
  • INSERT:用于向数据库表中插入数据。
    • 示例:INSERT INTO users (id, name, email) VALUES (1, 'John Doe', 'john.doe@example.com');
  • UPDATE:用于更新表中现有的记录。
    • 示例:UPDATE users SET email = 'john_new@example.com' WHERE id = 1;
  • DELETE:用于删除表中的记录。
    • 示例:DELETE FROM users WHERE id = 1;
  • CALL:用于调用存储过程。
    • 示例:CALL update_user_email(1, 'john_updated@example.com');
  • EXPLAIN PLAN:用于查看查询的执行计划。
    • 示例:EXPLAIN PLAN FOR SELECT * FROM users;
  • LOCK TABLE:用于锁定表,以便其他用户无法修改该表的数据。
    • 示例:LOCK TABLE users IN EXCLUSIVE MODE;
3. DML的特征
  • DML语句通常在事务中执行,并且支持回滚(ROLLBACK),如果操作发生错误,可以撤销对数据的修改。
  • 与DDL不同,DML操作是针对数据内容的修改,而非数据库结构的修改。

三、DCL(数据控制语言)

1. 定义和作用

DCL(Data Control Language)用于控制数据库的访问权限和事务控制。DCL语句主要涉及到数据库用户的权限管理及数据安全方面的操作。它确保了只有具有特定权限的用户才能对数据库进行操作。

2. 常见的DCL语句
  • GRANT:用于授予用户或角色特定的权限。
    • 示例:GRANT SELECT, INSERT ON users TO 'user_role';
  • REVOKE:用于撤销已授予用户或角色的权限。
    • 示例:REVOKE SELECT ON users FROM 'user_role';
  • COMMIT:用于提交事务,使所有修改永久生效。
    • 示例:COMMIT;
  • ROLLBACK:用于回滚事务,撤销当前事务中的所有操作。
    • 示例:ROLLBACK;
  • SAVEPOINT:用于设置事务中的保存点,便于回滚到某个特定的点。
    • 示例:SAVEPOINT savepoint_name;
  • SET TRANSACTION:用于设置事务的隔离级别。
    • 示例:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
3. DCL的特征
  • DCL操作主要用于授权和控制数据库的访问权限,确保数据的安全性与完整性。
  • DCL操作通常是由数据库管理员(DBA)执行的,用于管理用户权限和数据库的事务控制。
  • 与DML不同,DCL并不直接涉及到数据的操作,而是控制谁可以操作数据以及如何操作数据。

四、DDL、DML、DCL的主要区别

类别作用常见命令操作对象可回滚性事务控制
DDL用于定义数据库结构CREATE, ALTER, DROP, TRUNCATE, COMMENT数据库、表、视图、索引等不可回滚
DML用于操作数据SELECT, INSERT, UPDATE, DELETE表中的数据可回滚支持
DCL用于控制权限和事务GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT用户权限、事务不适用支持

五、总结

  • DDL主要用于定义和管理数据库结构,执行DDL语句会对数据库对象的结构产生永久性的影响。
  • DML则处理数据库中的数据内容,执行DML语句时,用户可以增、删、改、查数据,且这些操作可以通过事务回滚。
  • DCL用于控制用户和权限的管理,确保数据的安全性与访问控制,同时还涉及事务的提交和回滚等操作。

了解DDL、DML、DCL的区别对于数据库管理员和开发者非常重要,因为它们是数据库操作中不可或缺的一部分,每种语言的操作性质和使用场景都不同,合理使用可以帮助更高效、更安全地管理和操作数据库。


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

相关文章:

  • Webug4.0通关笔记04- 第6关宽字节注入
  • 洛谷P12238 [蓝桥杯 2023 国 Java A] 单词分类
  • 从车道检测项目入门open cv
  • 【图片识别成表格】批量图片识别成excel表格,批量识别图片区域文字保存到excel表格,基于WPF和腾讯OCR的识别方案
  • MyBatis 使用 POJO 参数动态查询教程
  • leetcode继续c++10/100
  • UDP数据报和TCP流套接字编程
  • BUUCTF——Online Tool
  • 日本IT行业|salesforce开发语言占据的地位
  • Java后端开发day39--方法引用
  • 如何系统学习音视频
  • gitmodule怎么维护
  • 千问3(Qwen3)模型开源以及初体验
  • 设计模式(工厂模式)
  • Android Studio Profiler
  • 矩阵区域和 --- 前缀和
  • 【计算机视觉】目标检测:深度解析YOLOv5:下一代实时目标检测框架实战指南
  • 《图像采集与处理技术的研究与洞察》
  • 从架构原理到落地实践:Apache SeaTunnel×Cloudberry数据集成全解读
  • SQL命令一:SQL 基础操作与建表约束
  • 解决 Flutter 在 iOS 真机上构建失败的问题
  • 使用Qt QAxObject解决Visual Fox Pro数据库乱码问题
  • Token-Budget-Aware LLM Reasoning
  • c网络库libevent的http常用函数的使用(附带源码)
  • 玩玩OCR
  • RPC复习
  • 【MCP Node.js SDK 全栈进阶指南】高级篇(5):MCP之微服务架构
  • 对话式 BI:让数据洞察从“专业门槛”变为“对话本能”
  • 多模态知识图谱与大模型 图解合集(干中学ing)
  • 【机器学习】​碳化硅器件剩余使用寿命稀疏数据深度学习预测