DDL 和 DML 的区别

17 Mar 2025 | 4 分钟阅读

数据库是相关记录的列表,而数据库管理系统(DBMS)是管理这些数据库最常见的方式。需要 SQL(结构化查询语言) 命令来与数据库系统交互。这些 SQL 命令可用于构建表、向表中插入数据、删除表、修改表以及为用户设置权限。我们可以将 SQL 命令分为 DDL、DQL、DCL 和 DML。

本文档将全面概述 DDL 和 DML 语言。DDL 和 DML 命令之间的区别是面试中最常见的部分。关键区别在于 DDL 命令用于创建数据库模式,而 DML 命令用于修改表中的现有数据。在进行比较之前,我们先来了解这些 SQL 命令

DDL vs DML

什么是 DDL 命令?

DDL 代表数据定义语言。顾名思义,DDL 命令有助于定义数据库或模式的结构。当我们执行 DDL 语句时,它会立即生效。使用此命令在数据库中所做的更改会被永久保存,因为其命令是自动提交的。以下命令属于 DDL 语言

  • CREATE:用于创建新数据库及其对象,如表、视图、函数、存储过程、触发器等。
  • DROP:用于永久删除服务器上的数据库及其对象,包括结构。
  • ALTER:用于通过修改现有属性的特性或添加新属性来更新数据库结构。
  • TRUNCATE:用于从表中彻底删除所有数据,包括它们的结构和服务器上分配的空间。
  • RENAME:此命令用于重命名数据库中的内容。

为什么使用 DDL 命令?

使用 DDL 命令的原因如下:

  • 它允许我们将共享数据存储在数据库中。
  • 由于数据独立性特性,它提高了数据的完整性。
  • 它将允许多个用户在同一个数据库上工作。
  • 它提高了安全高效的数据访问。

什么是 DML 命令?

它代表数据操作语言。DML 命令处理数据库现有记录的操作。它负责数据库中发生的所有更改。使用此命令在数据库中所做的更改无法永久保存,因为其命令不是自动提交的。因此,更改可以回滚。以下命令属于 DML 语言:

  • SELECT:此命令用于从表中提取信息。
  • INSERT:这是一个 SQL 查询,允许我们将数据添加到表的行中。
  • UPDATE:此命令用于更改或修改表的内容。
  • DELETE:此命令用于从数据库表中删除记录,可以是单独删除,也可以是批量删除。

为什么使用 DML 命令?

使用 DML 命令的原因如下:

  • 它帮助用户更改数据库表中的数据。
  • 它帮助用户指定所需的数据。
  • 它促进了人与系统的交互。

DDL 和 DML 命令之间的主要区别

以下几点解释了 DDL 和 DML 命令之间的主要区别:

  • 数据定义语言(DDL)语句描述数据库或模式的结构。而数据操作语言(DML)语句允许更改数据库中已有的数据。
  • 我们使用 DDL 命令来创建数据库或模式,而 DML 命令用于填充和操作数据库。
  • DDL 命令可以影响整个数据库或表,而 DML 语句仅根据查询中指定的条件影响单个或多个行。
  • 由于 DDL 命令是自动提交的,因此修改是永久性的,无法撤销。而 DML 语句不是自动提交的,这意味着修改不是永久性的,可以撤销。
  • DML 是一种命令式和过程式方法,而 DDL 是一种声明式方法。
  • DML 语句中的数据可以用 WHERE 子句过滤,而 DDL 语句中的记录不能用 WHERE 子句过滤。

DDL vs. DML 比较图

以下比较图快速解释了它们的主要区别

比较基础DDLDML
基本功能它帮助我们定义数据库的结构或模式,并处理数据在数据库中的存储方式。它允许我们操作(即检索、更新和删除)存储在数据库中的数据。
全称DDL 的完整形式是数据定义语言。DML 的完整形式是数据操作语言。
分类DDL 命令没有进一步的分类。DML 命令分为过程式 DML 和非过程式(声明式)DML。
命令用途DDL 语言中常用的命令有:
  • CREATE
  • DROP
  • ALTER
  • TRUNCATE
  • 重命名
DML 语言中常用的命令有:
  • INSERT
  • UPDATE
  • DELETE
  • SELECT
自动提交DDL 命令是自动提交的,因此数据库中发生的更改将是永久性的。DML 命令不是自动提交的,因此数据库更改不是永久性的。
回滚DDL 命令使更改永久化;因此,我们无法回滚这些语句。DML 命令不会使更改永久化;因此,可以回滚这些语句。
WHERE 子句DDL 命令不使用 WHERE 子句,因为在这里无法过滤记录。DML 语句可以在操作数据库中的数据时使用 WHERE 子句。
效果DDL 命令影响整个数据库或表。DML 命令将根据指定条件影响单个或多个记录。

结论

在本文档中,我们对 DDL 和 DML 命令进行了比较。我们在此得出结论:对于数据库的创建,两种语言在创建和访问数据库方面都是必要的。当我们处理大型数据库时,请确保我们正确地指定了条件,因为它可能会删除整个数据库或表。