什么是 DDL 和 DML?

Posted

技术标签:

【中文标题】什么是 DDL 和 DML?【英文标题】:What are DDL and DML? 【发布时间】:2017-07-20 02:17:46 【问题描述】:

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

它们是什么以及它们与 SQL 有什么关系?

【问题讨论】:

【参考方案1】:

以下内容改编自这里mysql What is DDL, DML and DCL?:

DDL

DDL 是数据定义语言的简称,它处理 数据应该如何驻留的数据库模式和描述 数据库。

CREATE – 创建数据库及其对象,例如(表、索引、视图、存储过程、函数和触发器)。 ALTER – 改变现有数据库的结构。 DROP – 从数据库中删除对象。 TRUNCATE – 从表中删除所有记录;此外,为记录分配的所有空间都将被删除。 COMMENT – 将 cmets 添加到数据字典中。 RENAME – 重命名对象。

DML

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

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

DCL

DCL 是包含命令的数据控制语言的简称 如 GRANT,主要关注权限、权限等 数据库系统的控制。

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

TCL

TCL 是事务控制语言的简称,它处理 数据库中的事务。

COMMIT – 提交事务。 ROLLBACK – 在发生任何错误时回滚事务。 SAVEPOINT – 事务中的一个点,允许将状态回滚到保存点时的状态。 SET TRANSACTION – 指定交易的特征。

【讨论】:

您可能希望在将来链接不可用的情况下扩展您的答案 有时您还会看到诸如 SELECT / SHOW / EXPLAIN / HELP 之类的命令从 DML 中分离出来并分组在 DQL 下,并带有来自 Query 的 Q——因为它们并没有真正操作任何东西. TRUNCATE 应该是 DML @PeteAlvin 没办法。 @snr 为什么不呢?您的意思是重置标识行(这是我对 TRUNCATE 和 DELETE 之间的主要实际区别的理解)是一种数据定义形式?【参考方案2】:

DDLData Definition Language:用于定义数据结构

例如,对于 SQL,它将是诸如 create tablealter table、...之类的指令

DMLData Manipulation Language:它用于操作数据本身

例如,对于 SQL,它将是诸如 insertupdatedelete、...之类的指令

【讨论】:

DESCRIBE 是 DDL 还是 DML? @TomJMuthirenthi 我不认为DESCRIBE 适合两者中的任何一个。它只是返回它自己的表/数据库结构表示。您可以使用例如实现相同的目标。 CREATE 但不是“人类可读” 如果 SELECT 被认为是 DML,那么 DESCRIBE 应该被认为是 DDL。【参考方案3】:

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;

【讨论】:

@isapir 您可以通过三种通用方式在 SQL 中“操作”数据: (1)您可以更改显示的结果。 (2)您可以更改结果的呈现或组织方式(在排序等方面)。 (3)您可以更改基础数据。在第一种情况下,您可以通过在 SELECT 语句中使用不同的 WHERE 子句、JOIN 谓词等来更改显示的结果,即“select * from account;”将给出与 select * from account where balance = 1000; 大不相同的结果(假设帐户有超过 1 行) 当您选择不同格式的数据时,您修改的是该查询的数据表示,而不是数据本身。 DML 中的 M 代表数据的操纵,或用外行术语修改。 SELECT 不修改数据。或者,TRUNCATE 确实如此,因此是 DML 指令而不是 DDL 指令。【参考方案4】:

DDL、数据定义语言

在数据库中创建和修改数据库对象的结构。 这些数据库对象可能有表、视图、模式、索引...等

例如:

CREATEALTERDROPTRUNCATECOMMIT

DML、数据操作语言

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

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

DML 中使用以下命令:

INSERTUPDATESELECTDELETE

【讨论】:

【参考方案5】:

通俗地说,假设你想盖房子,你会做什么。

DDL 即数据定义语言

    从头开始构建 翻新它 销毁旧的并从头开始重新创建它

那是

    CREATE ALTER DROP & CREATE

DML 即数据操作语言

人们进出/进出你的房子

    SELECT DELETE UPDATE TRUNCATE

DCL 即数据控制语言

您想控制人们允许他们进入房屋的哪一部分以及进入的类型。

    GRANT PERMISSION

【讨论】:

【参考方案6】:

DML 是 Data Manipulation Language 的缩写。用于检索、存储、修改、删除、插入和更新数据库中的数据。

示例:SELECT、UPDATE、INSERT 语句


DDL 是数据定义语言的缩写。用于创建和修改数据库中数据库对象的结构。

示例:CREATE、ALTER、DROP 语句

访问此网站了解更多信息:http://blog.sqlauthority.com/2008/01/15/sql-server-what-is-dml-ddl-dcl-and-tcl-introduction-and-examples/

【讨论】:

【参考方案7】:

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

DML = 数据操作语言,只有 3 个,INSERT、UPDATE、DELETE。 4、如果要算SELECT * INTO x_tbl from tbl的MSSQL(ANSI SQL:CREATE TABLE x_tbl AS SELECT * FROM tbl

【讨论】:

【参考方案8】:

DDL 是数据定义语言:想象一下您正在定义数据库。 所以我们使用 CREATE、ALTER TRUNCATE 命令。 DML 在定义我们正在操作数据之后。所以我们使用 SELECT、INSERT、UPDATE、DELETE 命令。

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

【讨论】:

【参考方案9】:

简单来说。

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

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

【讨论】:

【参考方案10】:

DDL:更改架构

DML:更改数据

似乎特定于 MySQL 限制 (rails's source code)

【讨论】:

【参考方案11】:

DDL

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

DML

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

【讨论】:

【参考方案12】:

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

【讨论】:

以上是关于什么是 DDL 和 DML?的主要内容,如果未能解决你的问题,请参考以下文章

什么是 DDL 和 DML?

DDL与DML问题

术语 DDL、DML 和 DCL 的起源是啥?

MySQL的DDL/DML/DCL到底是什么?

Delete 如何既是 DDL 又是 DML 语句

什么是DDL,DCL,DML