Как узнать, является ли тип запроса SQL DML или DDL? - PullRequest
2 голосов
/ 26 августа 2009

Как узнать, является ли тип запроса SQL DDL или DML?

Ответы [ 3 ]

2 голосов
/ 26 августа 2009

Операторы языка определения данных (DDL) используются для определения структуры или схемы базы данных. Некоторые примеры: CREATE - для создания объектов в базе данных ALTER - изменяет структуру базы данных DROP - удалить объекты из базы данных TRUNCATE - удалить все записи из таблицы, включая все места, выделенные для записей, удалены КОММЕНТАРИЙ - добавить комментарии в словарь данных RENAME - переименовать объект

Операторы языка управления данными (DML) используются для управления данными в объектах схемы. Некоторые примеры: SELECT - получить данные из базы данных INSERT - вставить данные в таблицу ОБНОВЛЕНИЕ - обновляет существующие данные в таблице DELETE - удаляет все записи из таблицы, место для записей остается MERGE - операция UPSERT (вставить или обновить) CALL - вызвать подпрограмму PL / SQL или Java EXPLAIN PLAN - объяснить путь доступа к данным LOCK TABLE - контроль параллелизма

1 голос
/ 26 августа 2009

DDL означает Язык определения данных . Любое утверждение, которое приведет к изменению определений данных, является DDL-утверждением. Обычная путаница заключается в операторах INSERT, UPDATE, DELETE (и, как Джонатан упоминает-MERGE). Несмотря на то, что они добавляют данные в таблицы, они не меняют свою структуру и ничего не добавляют к определениям данных. С другой стороны, операторы DDL обычно добавляют новые записи / информацию в словарь данных (за исключением статистики запросов). Это, однако, не всегда должно быть правдой.

Все, что не является DDL, является DML, что означает Язык манипулирования данными .

1 голос
/ 26 августа 2009

Классически, операторы DML:

  • SELECT
  • INSERT
  • DELETE
  • UPDATE
  • MERGE (новичок в блоке)

Все остальное - DDL - согласно некоторым наборам определений.

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

Если вы хотите обнаружить эти операторы, вы можете либо подготовить (и описать) оператор и просмотреть возвращенную информацию, чтобы определить, является ли он одним из операторов DML, перечисленных выше, либо вы можете отсканировать эти ключевые слова в качестве первого некомментированные слова в заявлении. Это охватывает подавляющее большинство практических случаев. То, что вы делаете, если у вас есть одна строка с несколькими операторами (возможно, разных типов), это решение, которое вы должны будете принять самостоятельно. В любом случае, не все СУБД допускают это.

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