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

SQL(结构化查询语言)的四大核心分类

这张图展示了 SQL(结构化查询语言)的四大核心分类,分别对应不同的数据库操作场景。以下是逐类解析:

1. 数据操作语言(DMLData Manipulation Language

作用:用于操作数据库中的数据(增、删、改、查),是日常业务中最频繁使用的 SQL 语句。

包含操作

  • 选择(SELECT:查询表中的数据(如 SELECT * FROM table;)。

  • 插入(INSERT:向表中添加新数据(如 INSERT INTO table (col1, col2) VALUES (val1, val2);)。

  • 更新(UPDATE:修改表中已有数据(如 UPDATE table SET col1 = new_val WHERE condition;)。

  • 删除(DELETE:删除表中数据(如 DELETE FROM table WHERE condition;)。

  • 合并(MERGE:合并 “更新” 和 “插入” 逻辑(如 Oracle 的 MERGE INTO,当记录存在时更新,不存在时插入)。

2. 数据定义语言(DDLData Definition Language默认提交

 作用:用于定义或修改数据库对象的结构(如表、视图、索引等),属于 “元数据操作”。

包含操作

  • 创建(CREATE:新建数据库对象(如 CREATE TABLE table (col1 INT, col2 VARCHAR);)。

  • 修改(ALTER:修改已有对象结构(如 ALTER TABLE table ADD COLUMN col3 INT;)。

  • 删除(DROP:删除数据库对象(如 DROP TABLE table;)。

  • 重命名(RENAME:修改对象名称(如 RENAME TABLE old_name TO new_name;)。

  • 截断(TRUNCATE:快速清空表数据(比 DELETE 更快,不记录单行删除日志,如 TRUNCATE TABLE table;)。

  • 注释(COMMENT:为表或列添加描述(如 COMMENT ON TABLE table IS '用户表';)。

3. 数据控制语言(DCLData Control Language)

作用:用于管理数据库的访问权限,控制用户对数据库对象的操作能力。

包含操作

  • 授予(GRANT:赋予用户权限(如 GRANT SELECT, INSERT ON table TO user;)。

  • 撤销(REVOKE:收回用户权限(如 REVOKE DELETE ON table FROM user;)。

4. 事务控制语句(Transaction Control)

作用:用于管理数据库事务,保证数据的一致性和完整性(满足事务的 ACID 特性:原子性、一致性、隔离性、持久性)。

包含操作

  • 提交(COMMIT:将事务中的修改永久保存到数据库(如 COMMIT;)。

  • 回滚(ROLLBACK:撤销事务中的所有修改,回到事务开始前的状态(如 ROLLBACK;)。

  • 保存点(SAVEPOINT:在事务中设置 “checkpoint”,允许回滚到特定点(而不是整个事务)(如 SAVEPOINT sp1; + ROLLBACK TO sp1;)。

额外说明:DQL(数据查询语言)的归属

严格来说,SQL 还包含 DQL(Data Query Language,数据查询语言),核心是 SELECT 语句。但在这张图中,SELECT 被归为 DML(部分资料也会将查询归为 DML 的子集)。若细分,DQL 可独立为一类,专注于 “数据查询”。

总结

SQL 通过分层分类,让数据库操作更清晰:

  • DML 管 “数据内容”,

  • DDL 管 “结构定义”,

  • DCL 管 “权限控制”,

  • 事务控制 管 “数据一致性”。

这种分类让开发者能快速定位 SQL 的用途,避免混淆不同操作的影响(如 DDL 会隐式提交事务,而 DML 可回滚)。

 

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

相关文章:

  • 【Jenkins入门以及安装】
  • 【unitrix数间混合计算】2.11 二进制正整数特质(bin_pos.rs)
  • 《C语言》结构体和联合体练习题--1
  • 如何回收内存对象,有哪些回收算法?
  • Fish shell的abbr命令行参数介绍和Bat文件查看工具
  • 【QT】常⽤控件详解(七)容器类控件 GroupBox TabWidget 布局管理器 Spacer
  • 深度学习-卷积神经网络CNN-AlexNet
  • LeetCode 括号生成
  • Hadoop MapReduce过程
  • LeetCode - 搜索插入位置 / 排序链表
  • (LeetCode 面试经典 150 题) 104. 二叉树的最大深度 (深度优先搜索dfs)
  • 【Docker实战入门】从核心概念到镜像构建
  • JavaScript的 fetch() 方法 笔记250810
  • CSS优先级、HTTP响应状态码
  • Android的事件分发流程、Kotlin协程、4大组件、Handler机制、架构设计、性能优化、内存泄漏
  • 第4章 程序段的反复执行2while语句P128练习题(题及答案)
  • 智慧农业-无人机视角庄稼倒伏农作物倒伏检测数据集VOC+YOLO格式541张1类别
  • VSCode添加Python、Java注释技巧、模板
  • 疏老师-python训练营-Day40训练和测试的规范写法
  • NumPy性能飞跃秘籍:向量化计算如何提升400倍运算效率?
  • istio笔记03--快速上手多集群mesh
  • 【C语言】深入探索预处理
  • Matlab 基于BP神经网络结合Bagging(BP-Bagging)集成算法的单变量时序预测 (单输入单输出)
  • 带冷端补偿的热电偶采集方案MAX31855
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • 【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
  • C++2024 年一级
  • Cursor设置
  • 【机器学习深度学习】模型选型:如何根据现有设备选择合适的训练模型
  • 【面试场景题】微博热点新闻系统设计方案