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

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

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

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

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

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

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

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

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

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

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

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

    ALTER TABLE table_name ADD column_name datatype;
    
  • DROP:删除数据库对象。

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

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

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

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

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

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

    UPDATE table_name SET column1 = value1 WHERE condition;
    
  • DELETE:删除数据。

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

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

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

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

    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)

    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)

    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 的区别和用法,可以更好地管理和操作数据库!

http://www.dtcms.com/a/86657.html

相关文章:

  • 运维--个人打包脚本分享(Linux)
  • canvas数据标注功能简单实现:矩形、圆形
  • 2025年如何避免使用验证码求解器时被IP封禁
  • (每日一道算法题)翻转对
  • 基于 ECharts 实现动态图表渲染支持10万+数据点实时更新方案
  • Flutter使用自签证书打包ipa
  • Excel 小黑第19套
  • 基于springboot的美容院管理系统(044)
  • 深圳问顶安全科技有限公司asktopsec是做什么的?
  • 事件、页面跳转、wxml语法——微信小程序学习笔记
  • 【AI】Orin Nano+ubuntu22.04上移植YoloV11,并使用DeepStream测试成功
  • How to share files with Windows via samba in Linux mint 22
  • MyBatisPlus(SpringBoot版)学习第二讲:基本CRUD
  • 安装PrettyZoo操作指南
  • JavaEE进阶---Mybatis(预编译SQL即时SQL动态SQL标签池化技术说明)
  • 堆的相关要点以及模拟实现
  • 快速部署Samba共享服务器作为k8s后端存储
  • 透析主流CSS预处理器的区别
  • 红蓝队自动化项目资产侦察武器库部署企查产权网络空间
  • Excel(实战):INDEX函数和MATCH函数、INDEX函数实战题
  • TDengine 中的 show 命令
  • Scratch游戏 | 《拍苍蝇》——Scratch厨房清洁大作战!
  • 【NLP 42、实践 ⑪ 用Bert模型结构实现自回归语言模型的训练】
  • centos7搭建postgresql12主从
  • Node.js 格式化时间的两种方法:原生 Date 与 npm 包 moment 详解
  • [运维]Windows 开启 Hyper-V 之后上传网速变慢解决方案
  • 2025清华大学:DeepSeek教程全集(PDF+视频精讲,共10份).zip
  • Spring MVC 执行流程:一个请求在 Spring MVC 中是如何执行的?
  • css的背景
  • Linux Namespace(网络命名空间)系列二 --- 使用 Open vSwitch 和网络命名空间搭建虚拟网络