什么是DDL和DML?


345

我听说过有关数据库的术语DDL和DML,但我不明白它们是什么。

它们是什么,它们与SQL有何关系?

Answers:


279

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

有关更多信息,请参见此处:MySQL什么是DDL,DML和DCL?,原文如下:

DDL

DDL是数据定义语言(Data Definition Language)的简称,它处理数据库模式和描述数据应如何驻留在数据库中。

  • 创建-创建数据库及其对象,例如(表,索引,视图,存储过程,函数和触发器)
  • ALTER –更改现有数据库的结构
  • DROP –从数据库中删除对象
  • TRUNCATE –删除表中的所有记录,包括为记录分配的所有空间均被删除
  • 评论–在数据字典中添加评论
  • 重命名–重命名对象

DML

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

  • SELECT –从数据库中检索数据
  • INSERT –将数据插入表
  • UPDATE –更新表中的现有数据
  • 删除–从数据库表中删除所有记录
  • MERGE – UPSERT操作(插入或更新)
  • 调用–调用PL / SQL或Java子程序
  • 说明计划–数据访问路径的解释
  • 锁表–并发控制

DCL

DCL是数据控制语言的简称,它包含诸如GRANT之类的命令,并且主要涉及数据库系统的权限,权限和其他控件。

  • GRANT –允许用户访问数据库特权
  • 撤消–撤消用户使用GRANT命令赋予的访问权限

TCL

TCL是事务控制语言的缩写,用于处理数据库中的事务。

  • COMMIT –提交交易
  • ROLLBACK –发生任何错误时回滚事务
  • SAVEPOINT –在组内回滚交易要点
  • SET TRANSACTION –指定交易的特征

2
您可能想扩展一下,在将来的任何情况下回答该链接将不可用
svarog

2
有时,您还会看到诸如SELECT / SHOW / EXPLAIN / HELP之类的命令从DML中分离出来,并DQL与Query中的Q一起归类于下-因为它们实际上并未操纵任何东西。
okdewit

1
TRUNCATE应该是DML
Pete Alvin

@PeteAlvin没办法。
snr

335

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

例如,SQL,这将是诸如指令create tablealter table...


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

例如,SQL,这将是如说明书insertupdatedelete,...


6
描述是DDL还是DML?
汤姆·J·穆蒂朗西

2
@TomJMuthirenthi我认为DESCRIBE这两者都不适合。它只是返回表/数据库结构的自己的表示形式。您可以用例如CREATE但不是“人类可读”的方法实现相同的目的
JensV

如果将SELECT视为DML,则应将DESCRIBE视为DDL。
Shloim '18年

40

DDL数据定义语言:用于定义数据库模式的规范表示法。它适用于架构级别。

DDL命令是:

create,drop,alter,rename

例如:

create table account (
  account-number  char(10),
 balance integer);

DML数据处理语言。它用于访问和处理数据。

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;” 与从余额= 1000的帐户中选择*相比,得出的结果(假设帐户有多于1行)将有很大不同;
拉朱

1
当选择不同格式的数据时,将修改该查询的数据表示方式,而不是数据本身。DML中的M代表数据的操纵或外行修改。SELECT不修改数据。或者,TRUNCATE确实是DML指令,而不是DDL指令。
isapir '18

31

在此处输入图片说明

DDL,数据定义语言

  • 创建和修改数据库中数据库对象的结构。
  • 这些数据库对象可能具有表,视图,架构,索引等。

例如:

  • CREATEALTERDROPTRUNCATECOMMIT,等。

DML,数据处理语言

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

  • 基本的粗粒操作在表中执行。
  • 这些污物操作由执行SELECTINSERTUPDATE等。

以下命令在DML中使用:

  • INSERTUPDATESELECTDELETE,等。

14

用外行术语来说,假设您要盖房子,您会做什么。

DDL 即数据定义语言

  1. 从头开始构建
  2. 重新装修
  3. 销毁旧版本并从头开始重新创建

那是

  1. CREATE
  2. ALTER
  3. DROP & CREATE

DML 即数据处理语言

人们进/进/出您的房子

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

DCL 即数据控制语言

您想控制人们被允许进入房屋的哪一部分以及访问的种类。

  1. GRANT PERMISSION


3

DDL是数据定义语言:只是认为您正在定义数据库。因此,我们使用CREATE,ALTER TRUNCATE命令。
DML是在定义我们正在处理数据之后。因此,我们使用SELECT,INSERT,UPDATE,DELETE命令。

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


2

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

DML =数据处理语言,只有3种,即INSERT,UPDATE,DELETE。4,如果你算上SELECT * INTO x_tbl from tblMSSQL的(ANSI SQL: CREATE TABLE x_tbl AS SELECT * FROM tbl


2

简单来说。

DDL(数据定义语言):将用于数据结构。定义数据结构。

DML(数据操作语言):将对数据起作用。操纵数据本身



2

DDL

创建,更改,删除(数据库,表,键,索引,视图,函数,存储过程)

DML

插入,删除,更新,截断(表)


1

DDL代表数据定义语言。DDL用于定义表的结构,例如创建表或向表中添加列,甚至删除和截断表。 DML代表数据处理语言。顾名思义,DML用于处理表数据。DML中有一些命令,例如插入和删除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.