DDL和DML是用于与数据库交互的两种严格的语句类型。我不确定为什么存在这种分类。
对于DDL和DML语句,Oracle数据库在内部的工作方式是否存在根本区别?
答案 0 :(得分:6)
Oracle中DDL和DML之间的一个主要(技术)区别是DDL 不事务性,即它们无法回滚且不需要提交。事实上,Oracle中的DDL在执行之前会进行隐式提交。
其他数据库(例如Postgres,DB2)对DDL和DML之间的事务没有任何区别
毕竟它只是一种分类,类似于术语“应用程序”和“服务器”(如在数据库服务器中)。从操作的角度来看,OpenOffice和Oracle都只是“应用程序”,但我们将它们分为不同的类别。
答案 1 :(得分:1)
DDL语句用于定义数据库结构,对象和模式,而DML语句用于管理模式对象中的数据。在一天结束时,Oracle(或任何其他数据管理系统)将根据安全权限和对象可用性(即锁定表/视图和隔离级别)处理每个类型语句。
此外,模式定义保存在内部主表中,因此您的DDL语句实际上会影响存储在这些表中的数据,并且在这种意义上可能被视为“主DML”语句。
答案 2 :(得分:1)
如果您的问题达到“是否有必要 DDL和DML”的原因“以不同方式实施”,答案是“否”。
但是,SQL语言的定义器选择使DDL在语法上不同。因此,必须通过适当的ALTER TABLE命令向表中添加列。该命令的副作用是将一行插入到记录所有列的目录表中。压力副作用。
但是,为了添加列,在目录表中插入行不能触发器本身没有根本原因,因此完全不需要任何“专用DDL”。 / p>