我听说过有关数据库的术语 DDL 和 DML,但我不明白它们是什么。
它们是什么以及它们与 SQL 有什么关系?
下面改编自这里MySQL 什么是 DDL、DML 和 DCL?:
DDL
DDL 是数据定义语言的简称,它处理数据库模式和描述,以及数据应该如何驻留在数据库中。
- CREATE – 创建数据库及其对象,如(表、索引、视图、存储过程、函数和触发器)。
- ALTER – 改变现有数据库的结构。
- DROP – 从数据库中删除对象。
- TRUNCATE - 从表中删除所有记录;此外,为记录分配的所有空间都将被删除。
- COMMENT – 向数据字典添加注释。
- 重命名——重命名一个对象。
DML
DML是处理数据操作的Data Manipulation Language的简称,包括SELECT、INSERT、UPDATE、DELETE等最常见的SQL语句,用于存储、修改、检索、删除和更新数据库中的数据。
- SELECT – 从一个或多个表中检索数据。
- INSERT – 将数据插入表中。
- UPDATE – 更新表中的现有数据。
- DELETE – 删除表中的所有记录。
- MERGE – UPSERT 操作(插入或更新)
- CALL – 调用 PL/SQL 或 Java 子程序。
- 解释计划——数据访问路径的解释。
- LOCK TABLE——并发控制。
DCL
DCL是Data Control Language的简称,包括GRANT等命令,主要关注数据库系统的权限、权限等控制。
- GRANT – 允许用户访问数据库的权限。
- REVOKE – 撤销使用 GRANT 命令赋予的用户访问权限。
TCL
TCL 是事务控制语言的简称,它处理数据库中的事务。
- COMMIT——提交一个事务。
- ROLLBACK – 在发生任何错误的情况下回滚事务。
- SAVEPOINT – 事务中的一个点,允许将状态回滚到保存点时的状态。
- SET TRANSACTION – 指定交易的特征。
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;
通俗地说,假设你要盖房子,你会做什么。
DDL
即数据定义语言
那是
CREATE
ALTER
DROP & CREATE
DML
即数据操作语言
人们进出/进出你的房子
SELECT
DELETE
UPDATE
TRUNCATE
DCL
即数据控制语言
您想控制人们允许他们进入房屋的哪一部分以及进入的类型。
GRANT PERMISSION
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/
DDL 是数据定义语言:想象一下您正在定义数据库。所以我们使用 CREATE,ALTER TRUNCATE 命令。
DML 在定义我们正在操作数据之后。所以我们使用 SELECT、INSERT、UPDATE、DELETE 命令。
请记住,DDL 命令是自动提交的。您不需要使用 COMMIT 语句。
DML(数据操作语言)命令需要提交/回滚。
简单来说。
DDL(数据定义语言):将处理数据的结构。定义数据结构。
DML(数据操作语言):将处理数据。操纵数据本身
创建、更改、删除(数据库、表、键、索引、视图、函数、存储过程)
插入、删除、更新、截断(表)
DDL代表数据定义语言。DDL 用于定义表的结构,例如创建表或向表中添加列,甚至删除和截断表。 DML代表数据操作语言。顾名思义,DML 用于操作表的数据。DML 中有一些命令,例如插入和删除。
对 DML 的不同回应可能对那些研究dbt的人有所帮助,dbt是一种广泛使用的用于部署数据转换的开源工具。(在此处查看更多详细信息。)
dbt 有利于“选择”语句,但不利于其他 DML 命令。参见,例如“为什么我不能在我的转换中编写 DML?”