В 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 - справочник тестировщика
Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.
Обязательно прочитайте: Что должен знать и уметь тестировщик
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам