Открыть сервис

Язык манипулирования данными

Язык манипулирования данными (Data Manipulation Language, DML) — это подмножество языков программирования баз данных, предназначенное для извлечения, вставки, обновления и удаления записей в таблицах реляционной базы данных. DML является одной из трёх основных составляющих языка SQL (наряду с DDL — Data Definition Language и DCL — Data Control Language) и обеспечивает взаимодействие пользователя или приложения с хранящимися данными. Основная цель DML — предоставить стандартизированные средства для выполнения операций запроса и модификации данных без необходимости описания способов их физического хранения.

Классификация и типы

В зависимости от способа обработки данных различают два основных типа DML:

В контексте SQL под DML традиционно понимают четыре базовые команды:

Некоторые авторы включают в DML также команды MERGE (слияние данных) и TRUNCATE (быстрое удаление всех записей), но последняя часто относится к DDL. Стандарт ISO/ANSI SQL определяет DML как язык, включающий операторы SELECT, INSERT, UPDATE, DELETE, а также SEARCH (для поиска в мульти-табличных структурах), VALUES и CALL.

История и развитие

История DML неразрывно связана с эволюцией реляционных баз данных. Первые базы данных (иерархические, сетевые) использовали процедурные языки — например, DML в языке COBOL. С появлением реляционной модели (Эдгар Кодд, 1970) возникла потребность в декларативном языке. В 1974 году Дональд Чемберлин и Рэймонд Бойс (IBM) создали язык SEQUEL (Structured English Query Language), ставший предшественником SQL. Первоначально SQL содержал лишь основные DML-команды — SELECT, INSERT, UPDATE, DELETE.

Со временем стандарт SQL развивался:

В 1980-х годах SQL стал де-факто стандартным DML для коммерческих СУБД (Oracle, DB2, Sybase, SQL Server). В 1990-х годах появились разработки в области объектно-реляционных баз данных, но SQL сохранил доминирование. Сегодня DML реализован во всех основных СУБД: PostgreSQL, MySQL, SQLite, Microsoft SQL Server, Oracle Database. Несмотря на диалектные различия (например, LIMIT в PostgreSQL против TOP в SQL Server), синтаксис команд DML остаётся практически универсальным.

Устройство и синтаксис

Каждая DML-команда SQL имеет строгую грамматику. Ниже приведены базовые шаблоны операторов (по стандарту SQL:2016).

SELECT

Основной оператор для извлечения данных: ``sql SELECT [DISTINCT] <список_полей_или_выражений> FROM <таблица> [WHERE <условие>] [GROUP BY <поля>] [HAVING <условие_группы>] [ORDER BY <поля> [ASC|DESC]] [LIMIT n]; ``

INSERT

Добавление одной или нескольких записей: ``sql INSERT INTO <таблица> [(<столбец1>, <столбец2>, ...)] VALUES (<значение1>, <значение2>, ...) [ON CONFLICT ...]; -- специфично для некоторых СУБД ` Можно также использовать INSERT INTO ... SELECT` для копирования данных из другой таблицы.

UPDATE

Изменение существующих записей: ``sql UPDATE <таблица> SET <столбец1> = <выражение1>, <столбец2> = <выражение2> [WHERE <условие>]; ` Без WHERE` изменяются все записи таблицы.

DELETE

Удаление записей: ``sql DELETE FROM <таблица> [WHERE <условие>]; ` Без WHERE` удаляются все записи (структура таблицы сохраняется).

MERGE

MERGE (он же UPSERT) выполняет условную операцию: если запись существует, то обновляет; если нет — вставляет: ``sql MERGE INTO <целевая_таблица> AS target USING <источник> AS source ON target.<ключ> = source.<ключ> WHEN MATCHED THEN UPDATE SET target.<поле> = source.<поле> WHEN NOT MATCHED THEN INSERT (<поля>) VALUES (<значения>); `` Эта команда не является обязательной в минимальном наборе DML, но поддерживается почти всеми современными СУБД.

Применение и значение

DML является основой любого приложения с базой данных, где требуется работа с записями. Наиболее распространённые сценарии:

Значение DML выходит за рамки чистого SQL. Языки запросов в NoSQL-системах (например, MongoDB Aggregation Pipeline или Cassandra Query Language — CQL) также включают операции, аналогичные DML: find, insert, update, delete. Таким образом, концепция DML универсальна для всех категорий баз данных, хотя синтаксис и возможности различаются.

Ограничения и критика

Несмотря на стандартизацию, DML имеет ряд недостатков:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →