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

MySQL--DQL、DML、DDL、DCL概念与区别

在SQL中,根据功能和操作对象的不同,通常将语文分为四大类:DQL(数据查询语言)DML(数据操作语言)DDL(数据定义语言)DCL(数据控制语言)

一、DQL(Data Query Language,数据查询语言)

  • 定义:用于从数据库中检索数据,不修改数据或数据库结构

  • 核心命令:

    • SELECT:查询数据

  • 用途:

    • 从表中提取特定条件的过滤

    • 支持复杂的条件过滤、排序、分组、聚合等操作

  • 示例:

SELECT name, age FROM users WHERE age > 18 ORDER BY name;

二、DML(Data Manipulation Language,数据操作语言)

  • 定义:用于对数据库中的数据进行增、删、改操作,直接影响数据内容

  • 核心命令:

    • INSERT:插入新数据

    • UPDATE:更新现有数据

    • DELETE:删除数据

  • 用途:

    • 维护数据库中的数据记录

    • 操作单位通常是表中的行(记录)

INSERT INTO users (name, age) VALUES ('Alice', 25);
UPDATE users SET age = 26 WHERE name = 'Alice';
DELETE FROM users WHERE age < 18;

三、DDL(Data Definition Language,数据定义语言)

  • 定义:用于定义或修改数据库结构(如表、索引、视图等),直接影响数据库对象的逻辑结构

  • 核心命令:

    • CREATE:创建数据库对象(如表、索引)

    • ALTER:修改现有对象结构

    • DROP:删除数据库对象

    • TRUNCATE:快速清空表数据(删除表并重建结构)

  • 用途:

    • 管理数据库的物理和逻辑结构

    • 操作单位是数据库对象(如表、列)

  • 示例:

CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
ALTER TABLE users ADD COLUMN email VARCHAR(100);
DROP TABLE users;

四、DCL(Data Control Language,数据控制语言)

  • 定义:用于控制数据库访问权限和事务管理,确保数据安全性和完整性。

  • 核心命令:

    • GTANT:授予用户权限

    • REVOKE:撤销用户权限

    • COMMIT:提交事务(属于TCL)

    • ROLLBACK:回滚事务(属于TCL)

  • 用途:

    • 管理用户对数据库对象的访问权限

    • 控制事务的提交或回滚(严格来说,事务控制属于TCL)

  • 示例:

GRANT SELECT, INSERT ON users TO user1;
REVOKE DELETE ON users FROM user1;

主要区别总结

类别全称功能核心命令操作对象是否自动提交
DQLData Query Language查询数据SELECT数据记录不修改数据,无提交
DMLData Manipulation Language操作数据(增删改)INSERT, UPDATE, DELETE数据记录需显式提交或回滚事务
DDLData Definition Language定义/修改数据库结构CREATE, ALTER, DROP, TRUNCATE数据库对象(表、索引)自动提交,无法回滚
DCLData Control Language控制访问权限和事务GRANT, REVOKE用户权限自动提交

注意事项

  1. 事务控制语言(TCL)

    • COMMITROLLBACK 通常被归类为TCL,用于管理DML操作的事务。

    • DCL更侧重权限管理,而TCL侧重事务的提交与回滚。

  2. DDL的自动提交特性

    • DDL语句(如CREATEALTER)执行后会自动提交,无法通过ROLLBACK撤销。

  3. TRUNCATE的特殊性

    • 虽然TRUNCATE清空表数据,但属于DDL(直接操作表结构),而非DML。

相关文章:

  • 硬编码(三)经典变长指令一
  • 2011-2019年各省电信业务总量数据
  • [STM32]从零开始的STM32 DEBUG问题讲解及解决办法
  • 利用three.js在Vue项目中展示重构的stl模型文件
  • Grafana接入Zabbix数据源
  • java23种设计模式-状态模式
  • 超越期望:提供超越标准的客户服务
  • Flume
  • 【Kubernetes】 Scheduler 的逻辑:从 Predicates/Priorities 到 Filter/Score
  • 微深节能 高炉废渣车天车精确定位系统 格雷母线
  • 使用CSS3DRenderer/CSS2DRenderer给模型上面添加html标签的一个demo
  • 3.1部署filebeat:5044
  • 2025年光电科学与智能传感国际学术会议(ICOIS 2025)
  • 可视化的决策过程:决策树 Decision Tree
  • 良田S500L高拍仪对接
  • STM32之时钟树
  • DeepSeek开源周Day5: 3FS存储系统与AI数据处理新标杆
  • 51单片机编程学习笔记——Delay效果的实现
  • 顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-大模型电话机器人
  • 2004-2024年可调谐激光雷达研究领域国内外发展研究2025.2.28
  • wordpress充值卡/开封网站优化公司
  • 做企业网站安装什么系统好/百度搜索引擎网站
  • 旅游精品网站建设/酒店如何进行网络营销
  • 网站建设费用高低有什么区别/app营销策划方案
  • 淘宝客网站需要多大主机/官网百度
  • 网站所有人查询/百度竞价排名技巧