什么是 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】:
DDL是Data Definition Language:用于定义数据结构。
例如,对于 SQL,它将是诸如 create table
、alter table
、...之类的指令
DML 是 Data Manipulation Language:它用于操作数据本身。
例如,对于 SQL,它将是诸如 insert
、update
、delete
、...之类的指令
【讨论】:
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、数据定义语言
在数据库中创建和修改数据库对象的结构。 这些数据库对象可能有表、视图、模式、索引...等例如:
CREATE
、ALTER
、DROP
、TRUNCATE
、COMMIT
等
DML、数据操作语言
DML 语句对表有影响。这就是我们在表中执行的基本操作。
基本的 crud 操作在表中执行。 这些 crud 操作由SELECT
、INSERT
、UPDATE
等执行。
DML 中使用以下命令:
INSERT
、UPDATE
、SELECT
、DELETE
等
【讨论】:
【参考方案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?的主要内容,如果未能解决你的问题,请参考以下文章