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

server/2025/4/1 1:48:23/

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.ppmy.cn/server/178492.html

相关文章

Java多线程与高并发专题——Future 是什么?

引入 在上一篇Callable 和 Runnable 的不同?的最后,我们有提到和 Callable 配合的有一个 Future 类,通过 Future 可以了解任务执行情况,或者取消任务的执行,还可获取任务执行的结果,这些功能都是 Runnable…

PHP转GO Day3 函数定义与包管理实践(创建数学工具包)

Day3 函数定义与包管理实践(创建数学工具包) 数学工具包开发问题指南 一、标准包结构示例 # 项目结构(在GOPATH/src外新建目录) my-math/ ├── go.mod # 模块定义文件 ├── mathutil/ # 包目录 │ ├── m…

【数据预测】基于遗传算法GA的LSTM光伏功率预测 GA-LSTM光伏功率预测【Matlab代码#91】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. 遗传算法GA2. 长短期记忆网络LSTM3. 基于GA-LSTM的光伏功率预测4. 部分代码展示5. 运行结果展示6. 资源获取 【可更换其他算法,获取资源请见文章第6节:资源获取】 …

数智读书笔记系列022《算力网络-云网融合2.0时代的网络架构与关键技术》读书笔记

一、书籍核心价值与定位 1.1 书籍概述:中国联通研究院的权威之作 《算力网络 —— 云网融合 2.0 时代的网络架构与关键技术》由中国联通研究院算力网络攻关团队精心撰写,是业界首部系统性探讨云网融合 2.0 与算力网络的专著。在云网融合从 1.0 迈向 2.0 的关键节点,本书的…

vue3 获取当前路由信息失败问题

刷新浏览器时获取当前路由信息失败:undefined import { ref, reactive, onMounted } from vue; import { useRoute } from vue-router; const route useRoute();onMounted(()>{// 打印当前路由信息console.log(当前route, route ); // 这里的打印有值console.…

自学Python创建强大AI:从入门到实现DeepSeek级别的AI

人工智能(AI)是当今科技领域最热门的方向之一,而Python是AI开发的首选语言。无论是机器学习、深度学习还是自然语言处理,Python都提供了丰富的库和工具。如果你梦想创建一个像DeepSeek这样强大的AI系统,本文将为你提供…

第八章-PHP数组

PHP数组 在 PHP 中,数组(Array)是一种用于存储多个值的复合数据类型。数组可以包含多个元素,每个元素可以是一个变量值,这些元素通过 索引 或 键 来访问。PHP 数组是非常灵活的,可以存储任意类型的数据&am…

详细说明脚本评估和耗时较长的任务

在网页性能优化中,脚本评估和耗时较长的任务是两大关键性能瓶颈。它们直接影响页面的加载速度、交互响应以及用户体验。以下是对这两个概念的详细说明及优化策略: 一、脚本评估(Script Evaluation) 1. 定义 脚本评估指浏览器解析…