Найти в Дзене

Что такое DDL и DML в SQL?

В SQL (Structured Query Language) существует несколько категорий команд, которые используются для взаимодействия с базами данных. Две из них — это DDL (Data Definition Language) и DML (Data Manipulation Language). Они выполняют разные задачи при работе с данными и структурой базы данных. Давайте разберём их подробно. - это подмножество SQL (Structured Query Language), которое используется для создания, изменения и удаления объектов базы данных (таблиц, индексов, схем и т.д.). Команды DDL влияют на структуру базы данных, но не непосредственно на сами данные (кроме Trunkate). Пример: создание таблицы. CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100), position VARCHAR(50), salary DECIMAL(10, 2) ); Пример: добавление нового столбца в существующую таблицу. ALTER TABLE employees ADD hire_date DATE; Пример: удаление таблицы. DROP TABLE employees; Пример: очистка таблицы. TRUNCATE TABLE employees; Отличие между DROP и TRUNCATE: DROP удаляет сам объект (например, таблицу) и все
Оглавление

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

1. DDL (Data Definition Language) — Язык определения данных

- это подмножество SQL (Structured Query Language), которое используется для создания, изменения и удаления объектов базы данных (таблиц, индексов, схем и т.д.).

Команды DDL влияют на структуру базы данных, но не непосредственно на сами данные (кроме Trunkate).

Основные команды DDL:

  • CREATE — создание новых объектов в базе данных, таких как таблицы, индексы, представления и т.д.

Пример: создание таблицы.

CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
position VARCHAR(50),
salary DECIMAL(10, 2)
);
  • ALTER — изменение структуры существующих объектов (например, добавление столбцов, изменение типа данных, изменение ключей и т.д.).

Пример: добавление нового столбца в существующую таблицу.

ALTER TABLE employees
ADD hire_date DATE;
  • DROP — удаление объектов из базы данных (например, таблицы или индекса).

Пример: удаление таблицы.

DROP TABLE employees;
  • TRUNCATE — быстрое удаление всех данных из таблицы, при этом структура таблицы остаётся неизменной.

Пример: очистка таблицы.

TRUNCATE TABLE employees;

Отличие между DROP и TRUNCATE:

DROP удаляет сам объект (например, таблицу) и все её данные.

TRUNCATE удаляет только данные, но структура таблицы остаётся, и таблицу можно использовать дальше.

  • RENAME позволяет изменять имя существующего объекта базы данных, например, таблицы, представления, индекса и т.д. Однако стоит отметить, что синтаксис и поддержка этой команды могут варьироваться в зависимости от используемой СУБД (например, в разных вариантах SQL — MySQL, PostgreSQL, Oracle, SQL Server — могут быть отличия).

Пример использования:

Переименование таблицы. Если у вас есть таблица с именем employees, и вы хотите изменить её имя на staff, вы можете использовать команду RENAME TO (в зависимости от СУБД):

-- Для MySQL и некоторых других СУБД:
RENAME TABLE employees TO staff;

В некоторых СУБД, таких как PostgreSQL, команда ALTER TABLE может использоваться для переименования таблицы:

ALTER TABLE employees RENAME TO staff;

Переименование столбца. Если вам нужно изменить имя столбца в таблице, например, в таблице employees, столбец name нужно переименовать в full_name:

-- Для PostgreSQL, MySQL 8.0 и выше:
ALTER TABLE employees
RENAME COLUMN name TO full_name;

В некоторых СУБД, таких как Oracle, для этого могут использоваться другие механизмы, например, через MODIFY.

2. DML (Data Manipulation Language) — Язык манипуляции данными

DML используется для работы с данными внутри объектов базы данных, таких как таблицы. Эти команды позволяют добавлять, изменять, удалять и получать данные из таблиц.

Основные команды DML:

  • INSERT — добавление новых строк в таблицу.

Пример: добавление новой записи в таблицу.

INSERT INTO employees (id, name, position, salary)
VALUES (1, 'John Doe', 'Manager', 75000.00);
  • UPDATE — изменение существующих данных в таблице.

Пример: обновление зарплаты сотрудника.

UPDATE employees
SET salary = 80000.00
WHERE id = 1;
  • DELETE — удаление строк из таблицы.

Пример: удаление записи сотрудника.

DELETE FROM employees
WHERE id = 1;
  • Отличие DELETE (DML) от TRUNCATE (DDL) (больше отличий читайте в статье Сравнение Truncate и Delete в SQL):
    DELETE: Удаляет строки по одной. Каждая строка удаляется по отдельности, с возможностью использования условий (через WHERE).

TRUNCATE: Удаляет все строки сразу, работает на уровне всей таблицы. Нельзя использовать условие WHERE.

  • SELECT — выборка данных из таблицы (или нескольких таблиц). Эта команда используется для получения данных и не изменяет их.

Пример: получение списка всех сотрудников.

SELECT name, position, salary
FROM employees;

Основные отличия между DDL и DML:

1. Цель:

DDL: Управляет структурой базы данных (создание, изменение, удаление объектов базы данных).

DML: Управляет данными (вставка, обновление, удаление и получение данных).

2. Воздействие:

DDL команды работают на уровне объектов базы данных (например, таблиц, схем).

DML команды работают с данными, которые хранятся в этих объектах.

3. Транзакционность:

DML команды могут быть частью транзакции, и изменения можно коммитить (COMMIT) или откатывать (ROLLBACK).

DDL команды по умолчанию считаются автокоммитными, то есть изменения вступают в силу сразу и не могут быть откатаны.

Заключение:

  • DDL используется для работы со структурой базы данных (создание, изменение, удаление таблиц и других объектов).
  • DML используется для работы с данными внутри этих объектов (вставка, обновление, удаление и выборка данных).

Если Вам интересно, что еще можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?

Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Обязательно прочитайте: Что должен знать и уметь тестировщик

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам