DDL、DML、DCL 的区别

简介: 【8月更文挑战第1天】

在数据库管理系统中,为了有效地操作和管理数据,我们使用不同类型的语言来执行各种任务。其中,DDL、DML 和 DCL 是三种常见且重要的语言类别,它们各自具有独特的功能和用途,对于数据库的设计、数据的处理以及权限的控制起着关键作用。

DDL(数据定义语言)

(一)定义

DDL 主要用于定义数据库对象的结构和属性,例如创建、修改或删除表、视图、索引、存储过程等。

(二)功能

  1. 创建数据库对象
    • CREATE TABLE:用于创建新表,并定义其列名、数据类型、约束等。
    • CREATE VIEW:创建视图,基于一个或多个表的查询结果。
    • CREATE INDEX:创建索引,提高数据检索的效率。
  2. 修改数据库对象
    • ALTER TABLE:添加、删除或修改表的列、约束等。
    • ALTER VIEW:修改已存在视图的定义。
  3. 删除数据库对象
    • DROP TABLE:删除表及其相关的数据和约束。
    • DROP VIEW:删除视图。
    • DROP INDEX:删除索引。

(三)示例

-- 创建一个名为 students 的表
CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

-- 为 students 表添加一个新列
ALTER TABLE students
ADD email VARCHAR(100);

-- 删除 students 表
DROP TABLE students;

(四)应用场景

  1. 数据库设计阶段:在创建数据库结构时,使用 DDL 来定义表、约束和索引等。
  2. 系统升级或重构:当需要修改数据库对象的结构以适应新的业务需求时。

DML(数据操作语言)

(一)定义

DML 用于对数据库中的数据进行操作,包括插入、更新、删除和查询数据。

(二)功能

  1. 插入数据
    • INSERT INTO:向表中添加新的行数据。
  2. 更新数据
    • UPDATE:修改表中已存在数据的某些列的值。
  3. 删除数据
    • DELETE FROM:从表中删除满足条件的行数据。
  4. 查询数据
    • SELECT:从表中检索符合条件的数据。

(三)示例

-- 向 students 表插入一条数据
INSERT INTO students (id, name, age)
VALUES (1, 'John Doe', 20);

-- 更新 students 表中 id 为 1 的学生的年龄
UPDATE students
SET age = 21
WHERE id = 1;

-- 删除 students 表中年龄小于 18 的学生
DELETE FROM students
WHERE age < 18;

-- 查询 students 表中所有学生的信息
SELECT * FROM students;

(四)应用场景

  1. 日常数据处理:如添加新的业务数据、修改错误数据等。
  2. 数据检索和分析:通过查询获取所需的数据进行分析和报告。

DCL(数据控制语言)

(一)定义

DCL 用于控制数据库的访问权限和安全性,包括授予和撤销用户的权限。

(二)功能

  1. 授予权限
    • GRANT:授予用户或角色对数据库对象的特定操作权限,如 SELECT、INSERT、UPDATE 等。
  2. 撤销权限
    • REVOKE:撤销之前授予的权限。

(三)示例

-- 授予用户名为 user1 对 students 表的查询权限
GRANT SELECT ON students TO user1;

-- 撤销用户名为 user1 对 students 表的查询权限
REVOKE SELECT ON students FROM user1;

(四)应用场景

  1. 数据库安全管理:确保只有授权的用户能够执行特定的操作,保护数据的安全性和完整性。
  2. 多用户环境:在多个用户共享数据库的情况下,合理分配权限以避免误操作和数据泄露。

DDL、DML 和 DCL 的区别

(一)操作对象

  1. DDL 主要操作数据库对象的结构,如表、视图、索引等。
  2. DML 操作的是数据库中的实际数据。
  3. DCL 则侧重于对用户权限的管理。

(二)执行结果

  1. DDL 执行的结果会永久性地改变数据库的结构。
  2. DML 对数据的操作是临时性的,除非提交事务,否则数据更改可以回滚。
  3. DCL 的权限授予或撤销会立即生效,并影响用户对数据库的操作权限。

(三)语法和关键字

  1. DDL 常用的关键字包括 CREATEALTERDROP 等。
  2. DML 常用的关键字有 INSERTUPDATEDELETESELECT 等。
  3. DCL 常用的关键字是 GRANTREVOKE

实际应用中的综合考虑

在实际的数据库应用开发中,需要综合考虑使用 DDL、DML 和 DCL 来满足不同的需求。例如,在项目初始阶段,使用 DDL 设计数据库结构;在业务运行过程中,使用 DML 处理数据;同时,通过 DCL 合理控制用户权限,保障数据安全。

在进行数据库操作时,要特别注意以下几点:

  1. 对于 DDL 操作,由于其会直接影响数据库结构,所以在执行之前要仔细评估其影响,确保操作的必要性和正确性。
  2. DML 操作通常在事务中进行,以保证数据的一致性和完整性。在执行批量数据操作时,要注意性能优化和错误处理。
  3. 对于 DCL,要根据用户的角色和职责谨慎授予权限,遵循最小权限原则,避免过度授权导致的安全风险。
目录
相关文章
|
SQL Oracle 关系型数据库
DDL、DML和DCL的区别与理解
DDL、DML和DCL的区别与理解
2479 1
DDL、DML和DCL的区别与理解
|
3月前
|
人工智能 JSON 自然语言处理
【2026最新最全】一篇文章带你学会Qoder编辑器
Qoder是一款面向程序员的AI编程助手,集智能补全、对话式编程、项目级理解、任务模式与规则驱动于一体,支持模型分级选择与CLI命令行操作,可自动生成文档、优化提示词,提升开发效率。
9363 10
【2026最新最全】一篇文章带你学会Qoder编辑器
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
24037 2
|
5月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
48751 11
|
8月前
|
人工智能 边缘计算 自然语言处理
普通电脑也能跑AI:10个8GB内存的小型本地LLM模型推荐
随着模型量化技术的发展,大语言模型(LLM)如今可在低配置设备上高效运行。本文介绍本地部署LLM的核心技术、主流工具及十大轻量级模型,探讨如何在8GB内存环境下实现高性能AI推理,涵盖数据隐私、成本控制与部署灵活性等优势。
7880 0
普通电脑也能跑AI:10个8GB内存的小型本地LLM模型推荐
|
SQL 存储 数据库
数据库语言:DDL与DML详解
数据库语言:DDL与DML详解
5887 1
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
4598 1
阿里云服务器开放端口完整图文教程
|
SQL 存储 数据库
Flink + Paimon 数据 CDC 入湖最佳实践
Flink + Paimon 数据 CDC 入湖最佳实践
3206 59
|
NoSQL Java Redis
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
430 0
|
缓存 Java 开发工具
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
三级缓存是Spring框架里,一个经典的技术点,它很好地解决了循环依赖的问题,也是很多面试中会被问到的问题,本文从源码入手,详细剖析Spring三级缓存的来龙去脉。
2187 24
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存

热门文章

最新文章

下一篇
开通oss服务