Есть ли разница в том, как DDL и DML реализуются базой данных? - PullRequest
1 голос
/ 27 ноября 2010

DDL и DML являются двумя строгими категориями типов операторов, используемых для взаимодействия с базой данных.Я не уверен, почему существует такая классификация.

Есть ли принципиальное различие в том, как база данных Oracle будет работать внутри системы относительно операторов DDL и DML?

Ответы [ 3 ]

6 голосов
/ 27 ноября 2010

Одним из основных (технических) различий между DDL и DML в Oracle является то, что DDL является , а не транзакционным, то есть их нельзя откатить и они не требуют фиксации.На самом деле DDL в Oracle делает неявную фиксацию перед ее выполнением.

Другие базы данных (например, Postgres, DB2) не имеют значения в отношении транзакций между DDL и DML

Послевсе это просто категоризация, похожая на термины «приложение» и «сервер» (как в сервере баз данных).С операционной точки зрения OpenOffice и Oracle являются просто «приложениями», но мы классифицируем их по разным категориям.

1 голос
/ 27 ноября 2010

Если ваш вопрос равен «есть ли причина, по которой необходимо для того, чтобы DDL и DML были« реализованы по-разному », ответ« НЕТ ».

ОднакоОпределители языка SQL решили сделать DDL синтаксически отличным. Как следствие, добавление столбца в таблицу должно быть выполнено с помощью соответствующей команды ALTER TABLE. Побочным эффектом этой команды является то, что строка вставляется в таблицу каталога.который документирует все столбцы. Stress побочный эффект .

Но нет фундаментальной причины, по которой вставка строки в таблицу каталога не может быть самим триггером для добавления столбцов, что полностью исключает необходимость в каком-либо «выделенном DDL».

1 голос
/ 27 ноября 2010

Операторы DDL используются для определения структур базы данных, объектов и схем, тогда как операторы DML используются для управления данными в объектах схемы.В конце дня Oracle (или любая другая система управления данными) будет обрабатывать каждый оператор типа в соответствии с разрешениями безопасности и доступностью объектов (т. Е. Блокирует таблицы / представления и уровни изоляции).

Кроме того, определения схемыхранятся во внутренних основных таблицах, поэтому ваши операторы DDL действительно влияют на данные, хранящиеся в этих таблицах, и, возможно, в этом смысле их можно считать «основными DML».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...