代码之家  ›  专栏  ›  技术社区  ›  Aakash Goel

DDL和DML由数据库实现的方式有区别吗?

  •  1
  • Aakash Goel  · 技术社区  · 15 年前

    DDL和DML是用于与数据库交互的两种严格类型的语句。我不知道为什么存在这种分类。

    对于DDL和DML语句,Oracle数据库在内部的工作方式有根本区别吗?

    3 回复  |  直到 15 年前
        1
  •  6
  •   a_horse_with_no_name    15 年前

    在Oracle中,DDL和DML的一个主要(技术)区别是,DDL是 事务性,即它们不能回滚,不需要提交。事实上,Oracle中的DDL在执行前执行隐式提交。

    其他数据库(例如Postgres、DB2)在DDL和DML之间的事务方面没有区别。

    毕竟,它只是一个分类,类似于术语“应用程序”和“服务器”(在数据库服务器中)。从操作的角度来看,OpenOffice和Oracle都是简单的“应用程序”,但是我们将它们分为不同的类别。

        2
  •  1
  •   bitxwise    15 年前

    DDL语句用于定义数据库结构、对象和模式,而DML语句用于管理模式对象中的数据。最后,Oracle(或任何其他数据管理系统)将根据安全权限和对象可用性(即表/视图上的锁和隔离级别)处理每个类型语句。

    另外,模式定义保存在内部主表中,因此您的DDL语句实际上会影响存储在这些表中的数据,并且在这种意义上,可能被视为“主DML”语句。

        3
  •  1
  •   Erwin Smout    15 年前

    如果你的问题相当于“有理由这么做吗? 必要的 对于DDL和DML来说,“实现方式不同”,答案是“不”。

    然而,SQL语言的定义者选择了使DDL在语法上与众不同。因此,必须通过适当的alter table命令向表中添加列。该命令的一个副作用是在记录所有列的目录表中插入一行。强调 副作用 .

    但是没有根本的理由说明在目录表中插入行不能 触发器本身 对于列添加,因此完全不需要任何“专用DDL”。