SQL的DCL,DDL,DML和DQL分别是什么

SQL(Structured Query Language)包括以下四种主要语言类别,分别用于不同的数据库操作:

1. DCL(Data Control Language,数据控制语言)

用于控制数据库访问权限和安全。

常见命令
  • GRANT:授予用户或角色权限。

    SQL 复制代码
    GRANT SELECT, INSERT ON table_name TO user_name;
  • REVOKE:撤销用户或角色的权限。

    SQL 复制代码
    REVOKE SELECT, INSERT ON table_name FROM user_name;
应用场景
  • 管理用户权限(如 SELECT、INSERT、UPDATE、DELETE)。
  • 控制数据库对象(如表、视图)的访问。

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

用于定义和管理数据库对象(如表、索引、视图等)的结构。

常见命令
  • CREATE:创建数据库对象。

    SQL 复制代码
    CREATE TABLE table_name (
        column1 datatype,
        column2 datatype,
        ...
    );
  • ALTER:修改数据库对象。

    SQL 复制代码
    ALTER TABLE table_name ADD column_name datatype;
  • DROP:删除数据库对象。

    SQL 复制代码
    DROP TABLE table_name;
  • TRUNCATE:清空表中的数据(保留表结构)。

    SQL 复制代码
    TRUNCATE TABLE table_name;
应用场景
  • 创建、修改或删除表、索引、视图等。
  • 定义数据库架构。

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

用于操作数据库中的数据(增删改查)。

常见命令
  • INSERT:插入数据。

    SQL 复制代码
    INSERT INTO table_name (column1, column2) VALUES (value1, value2);
  • UPDATE:更新数据。

    SQL 复制代码
    UPDATE table_name SET column1 = value1 WHERE condition;
  • DELETE:删除数据。

    SQL 复制代码
    DELETE FROM table_name WHERE condition;
应用场景
  • 操作表中的数据(增删改)。
  • 执行事务(如 BEGIN TRANSACTIONCOMMITROLLBACK)。

4. DQL(Data Query Language,数据查询语言)

用于查询数据库中的数据。

常见命令
  • SELECT:查询数据。

    SQL 复制代码
    SELECT column1, column2 FROM table_name WHERE condition;
应用场景
  • 检索和过滤数据。
  • 聚合和分析数据(如 GROUP BYHAVINGORDER BY)。

总结对比

类别 功能 常见命令 应用场景
DCL 控制权限 GRANT, REVOKE 管理用户权限和访问控制
DDL 定义结构 CREATE, ALTER, DROP, TRUNCATE 创建、修改或删除数据库对象
DML 操作数据 INSERT, UPDATE, DELETE 增删改数据,执行事务
DQL 查询数据 SELECT 检索、过滤和分析数据

示例场景

  1. 创建表并插入数据(DDL + DML)

    SQL 复制代码
    CREATE TABLE users (
        id INT PRIMARY KEY,
        name VARCHAR(50),
        age INT
    );
    
    INSERT INTO users (id, name, age) VALUES (1, 'Alice', 25);
  2. 查询数据并授予权限(DQL + DCL)

    SQL 复制代码
    SELECT * FROM users WHERE age > 20;
    
    GRANT SELECT ON users TO user1;
  3. 更新数据并提交事务(DML)

    复制代码
    SQLBEGIN TRANSACTION;
    UPDATE users SET age = 30 WHERE id = 1;
    COMMIT;

通过理解 DCL、DDL、DML 和 DQL 的区别和用法,可以更好地管理和操作数据库!

相关推荐
夏炳辉.40 分钟前
PostgreSQL 高可用集群核心配置参数全解:从原生流复制到 Patroni 企业级方案
数据库·postgresql
努力的小雨1 小时前
KES 开启 SSL 前,证书、端口和客户端要一起验
数据库
DevOps老兵2 小时前
AI全栈知识07:向量数据库 - Milvus/Chroma实战
数据库·ai·milvus
这个DBA有点耶2 小时前
当数据库从“存储”走向“决策”:金仓数据库的融合架构之路
数据库·架构·aigc
意疏3 小时前
2026年远控软件安全横评:六款主流工具逐项核查——官方文档、一手实测与安全事件,全摊开
大数据·前端·数据库
名不经传的养虾人3 小时前
从0到1:企业级AI项目迭代日记 Vol.90|Agent变快了,Judge定下来了
大数据·数据库·人工智能·ai编程·企业ai
冰之杍3 小时前
MySQL utf8mb3 → utf8mb4 完整修改方案
数据库·mysql
老纪的技术唠嗑局4 小时前
端侧智能爆火之后,为何模型反而不是主角了?
数据库·人工智能
这个DBA有点耶4 小时前
一文讲透数据库分类:关系型、非关系型、OLTP、OLAP、分布式、多模……
数据库·mysql·架构
Macbethad4 小时前
使用Rigol DHO924示波器连接上位机进行24小时波形数据记录的技术报告
数据库