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

Ответ

DDL (Data Definition Language, язык определения данных) — это набор SQL-команд для создания, изменения и удаления структурных объектов базы данных (схемы), но не самих данных.

Основные DDL-команды: Команда Назначение Пример
CREATE Создание нового объекта (таблицы, индекса, схемы). CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT);
ALTER Изменение структуры существующего объекта. ALTER TABLE users ADD COLUMN email VARCHAR(255);
DROP Полное удаление объекта из базы данных. DROP TABLE users;
TRUNCATE Быстрое удаление всех строк из таблицы (сбрасывает счетчики автоинкремента). TRUNCATE TABLE log_entries;
RENAME Переименование объекта. ALTER TABLE users RENAME TO customers;

Ключевые особенности для понимания:

  1. Работа с метаданными: DDL изменяет схему БД (какие таблицы есть, их столбцы, типы), в отличие от DML (Data Manipulation Language: INSERT, UPDATE, DELETE, SELECT), который работает с данными внутри этих структур.
  2. Неявный коммит: В большинстве СУБД выполнение DDL-операции автоматически завершает текущую транзакцию (происходит коммит). Ее нельзя откатить командой ROLLBACK (зависит от СУБД).
  3. Привилегии: Обычно выполнение DDL требует высоких прав доступа (например, роли DBA).

Практическое значение для тестировщика: Понимание DDL необходимо для чтения скриптов миграции базы данных, проверки корректности развертывания новых версий приложения и анализа структуры БД при составлении сложных запросов.

Ответ 18+ 🔞

А, ну вот, подъехали! Сейчас я тебе, дружок, на пальцах объясню, что за зверь такой этот DDL, чтобы у тебя в голове всё встало на свои места, а не болталось, как хуй в проруби.

DDL (Data Definition Language, или, по-нашему, язык описания данных) — это, грубо говоря, твой набор волшебных пенделей, которыми ты можешь лепить, перекраивать и в пизду отправлять саму структуру базы данных. Не данные внутри, а именно каркас, скелет, чертеж. Создал таблицу — молодец, удалил — пидорас, но это уже твои проблемы.

Основные команды — твой арсенал для творчества и разрушения:

Команда Что делает, если без соплей Пример (чтоб не тупил)
CREATE Рожает новый объект из ничего. Таблицу, например. CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT); — вот тебе табличка «юзеры», радуйся.
ALTER Начинает ебаться с уже готовым объектом. «А давай-ка добавим колонку, а то мало». ALTER TABLE users ADD COLUMN email VARCHAR(255); — теперь каждый юзер должен иметь почту, идиот.
DROP Беспощадный удар сапогом. Удаляет объект нахуй вместе со всеми потрохами. DROP TABLE users; — и нет твоей таблички. Всё. Пиздец.
TRUNCATE Не такой кровожадный, как DROP, но тоже не подарок. Выгребает все данные из таблицы так быстро, что глаза слипаются. Счётчики автоинкремента обнуляет. TRUNCATE TABLE log_entries; — логов как не бывало, но таблица-то осталась, пустая.
RENAME Команда для тех, кому неймётся. «Ой, users — скучное название, давайте будет customers, звучит солиднее». ALTER TABLE users RENAME TO customers; — переименовал и чувствуешь себя архитектором.

А теперь, блядь, самое важное, что надо впаять себе в башку:

  1. DDL vs DML — война миров. DDL (CREATE, ALTER) — это про каркас, схему, где что будет лежать. DML (INSERT, SELECT) — это уже про то, чтобы в этот каркас запихнуть данные или выковырять их оттуда. Не путай, а то получишь ебало от админа.
  2. Неявный коммит — подстава года. В большинстве СУБД, как только ты выполнил DDL-команду, текущая транзакция автоматом коммитится. Хотел откатить? А хуй там! Задумался — считай, уже сделал. (Хотя, зависит от системы, но лучше считать, что так и есть, чтоб не обосраться).
  3. Привилегии — не для всех. Ковыряться в структуре БД — право избранных. Обычному смертному с ролью user это заказано. Нужны права DBA или что-то подобное, иначе получишь в ответ «да пошёл ты».

Зачем это тебе, тестировщику? Да затем, ёпта! Чтобы не быть слепым котёнком, когда тебе подсовывают скрипты миграции. Чтобы понимать, что там наворотили в новой версии приложения. Чтобы, когда пишешь хитрый запрос, не гадать, а есть ли нужная колонка в таблице или её уже на хуй послали командой DROP. В общем, чтобы мозги работали, а не просто кнопки жать.