DDL和DML是什么?

510
我听说过DDL和DML这两个词与数据库有关,但我不理解它们是什么。
它们是什么?它们与SQL又有什么关系?
13个回答

572

SQL命令可分为三个子组,DDL,DML和DCL

以下内容改编自MySQL什么是DDL、DML和DCL?

DDL

DDL是数据定义语言的缩写,处理数据库模式和描述,即数据应如何存储在数据库中。

  • CREATE - 创建数据库及其对象,如(表、索引、视图、存储过程、函数和触发器)。
  • ALTER - 修改现有数据库的结构。
  • DROP - 从数据库中删除对象。
  • TRUNCATE - 删除表中所有记录;此外,所有记录所分配的空间也被删除。
  • COMMENT - 向数据字典添加注释。
  • RENAME - 重命名一个对象。

DML

DML是数据操作语言的缩写,处理数据操作,包括最常用的SQL语句,如SELECT、INSERT、UPDATE、DELETE等,用于存储、修改、检索、删除和更新数据库中的数据。

  • SELECT - 从一个或多个表中检索数据。
  • INSERT - 将数据插入表格中。
  • UPDATE - 更新表格中的现有数据。
  • DELETE - 删除表格中的所有记录。
  • MERGE - UPSERT操作(插入或更新)
  • CALL - 调用PL/SQL或Java子程序。
  • EXPLAIN PLAN - 解释数据访问路径。
  • LOCK TABLE - 并发控制。

DCL

DCL是数据控制语言的缩写,包括诸如GRANT等命令,主要涉及数据库系统的权限、授权和其他控制。

  • GRANT – 允许用户访问数据库权限。
  • REVOKE – 撤销使用 GRANT 命令授予用户的访问权限。

TCL

TCL 是事务控制语言(Transaction Control Language)的缩写,用于处理数据库内的事务。

  • COMMIT – 提交一个事务。
  • ROLLBACK – 在出现任何错误的情况下回滚事务。
  • SAVEPOINT – 事务内的一个点,允许将回滚状态恢复到保存点时的状态。
  • SET TRANSACTION – 指定事务的特性。

4
如链接不可用,未来如果有需要,请在回答中稍微扩展一下您的答案。 - svarog
13
有时候你也会看到像SELECT / SHOW / EXPLAIN / HELP这样的命令从DML中分离出来,归为“DQL”组,其中Q代表查询,因为它们并不真正操作任何东西。 - okdewit
2
TRUNCATE 应该是 DML。 - Pete Alvin
谢谢朋友,我刚开始学习编程,这是我在互联网上找到的最好的答案,愿上帝保佑你。 - Agusavendaño

351

DDL数据定义语言:它用于定义数据结构

例如,使用SQL,它将是如下操作指令:create tablealter table等等。


DML数据操作语言:它用于操纵数据本身

例如,使用SQL,它将是如下操作指令:insertupdatedelete等等。


7
DESCRIBE是DDL还是DML?DESCRIBE是DDL(数据定义语言)。 - Tom J Muthirenthi
2
@TomJMuthirenthi 我认为DESCRIBE不属于这两者之一。它只返回表/数据库结构的自身表示。您可以使用例如CREATE来实现相同的功能,但不是“人类可读的”。 - JensV
1
如果SELECT被认为是DML,那么DESCRIBE应该被认为是DDL。 - Shloim

44

DDLData Definition Language:用于定义数据库模式的规范符号。它在模式层级上进行操作。

DDL 命令包括:

create、drop、alter、rename

例如:

create table account (
  account_number  char(10),
 balance integer);

DMLData Manipulation Language 的缩写。它用于访问和操作数据。

DML 命令包括:

select,insert,delete,update,call
例如:
update account set balance = 1000 where account_number = 01;

1
@isapir SQL 中有三种一般的方式可以“操作”数据: (1)你可以改变呈现的结果。 (2)你可以改变结果的呈现或组织方式(如排序等方面)。 (3)你可以改变底层数据。在第一种情况下,你可以通过在 SELECT 语句中使用不同的 WHERE 子句、JOIN 谓词等来改变呈现的结果,例如:“select * from account;”将给出一个非常不同的结果(假设账户有多行),而“select * from account where balance = 1000;”将只返回余额为 1000 的帐户。 - Raju
1
当您选择不同格式的数据时,您修改了该查询的数据呈现方式,而不是数据本身。DML中的M代表数据操作,或者通俗地说是数据修改。SELECT不会修改数据。相反,TRUNCATE会修改数据,因此它是DML指令而不是DDL指令。 - isapir

31

enter image description here

DDL, 数据定义语言

  • 在数据库中创建和修改数据库对象的结构。
  • 这些数据库对象可能包括表、视图、架构、索引等。

e.g.:

  • CREATE, ALTER, DROP, TRUNCATE, COMMIT等。

DML,数据操作语言

DML语句影响表格。这是我们在表格中执行的基本操作。

  • 表格中进行基本的crud操作。
  • 这些crud操作由SELECTINSERTUPDATE等执行。

以下命令用于DML:

  • INSERTUPDATESELECTDELETE等。

15

用通俗易懂的说法,如果你想建房子,你会怎么做。

DDL 即数据定义语言

  1. 从头开始建造
  2. 翻新它
  3. 摧毁旧房并重新建造

也就是说

  1. CREATE
  2. ALTER
  3. DROP & CREATE

DML 即数据操作语言

人们进出/从你的房子中走过

  1. SELECT
  2. DELETE
  3. UPDATE
  4. TRUNCATE

DCL 即数据控制语言

你想控制人们能够访问房子的哪些部分和以何种方式进行访问。

  1. GRANT PERMISSION

我想知道我们如何建造和使用房屋,而不使用这样的缩写? :P - akauppi

14

4

DDL = 数据定义语言,任何提供有关数据结构和其他信息的命令

DML = 数据操作语言,只有三种:INSERT、UPDATE 和 DELETE。如果你将 MSSQL 中的 SELECT * INTO x_tbl from tbl(ANSI SQL:CREATE TABLE x_tbl AS SELECT * FROM tbl)计算在内,则有四种。


3

DDL是数据定义语言:可以将其视为定义数据库的过程。因此,我们使用CREATE、ALTER和TRUNCATE命令。
DML是在定义之后操作数据的过程。因此,我们使用SELECT、INSERT、UPDATE和DELETE命令。

请记住,DDL命令会自动提交。您不需要使用COMMIT语句。
DML(数据操作语言)命令需要提交/回滚。


3

DDL

DDL(数据定义语言)包括创建、修改和删除数据库、表、键、索引、视图、函数和存储过程等。

DML

DML(数据操作语言)包括向表中插入、删除、更新和截断数据等操作。


2

简单来说。

DDL(数据定义语言):将处理数据结构,定义数据结构。

DML(数据操作语言):将处理数据本身,操纵数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接