Лекция 5. DDL: CREATE, ALTER, DROP

1. Что такое DDL?

DDL (Data Definition Language) — это подмножество команд языка SQL, которое отвечает за определение и управление структурой базы данных и ее объектами. Если DML (Data Manipulation Language) работает с данными (строками), то DDL работает со схемой — таблицами, столбцами, индексами и ограничениями.

Основные команды DDL — это `CREATE`, `ALTER` и `DROP`.

2. CREATE — Создание объектов

Команда `CREATE` используется для создания новых объектов в базе данных.

CREATE DATABASE

Создает новую базу данных. Обычно эта команда выполняется в терминале, а не в SQL-редакторе.

CREATE TABLE

Самая важная команда DDL. Она создает новую таблицу в текущей базе данных. В предыдущей лекции мы уже видели ее в действии.

Синтаксис и типы данных

При создании таблицы мы определяем ее столбцы и типы данных. Вот некоторые из наиболее часто используемых типов данных в PostgreSQL:

  • `INT` или `INTEGER`: Целое число.
  • `SERIAL`: Специальный тип для автоинкрементных целочисленных ID (автоматически создает последовательность).
  • `VARCHAR(n)`: Строка символов переменной длины с ограничением `n`.
  • `TEXT`: Строка символов неограниченной длины.
  • `DATE`: Дата (год, месяц, день).
  • `TIMESTAMP`: Дата и время.
  • `BOOLEAN`: Логический тип (`true` или `false`).
  • `DECIMAL(p, s)`: Число с фиксированной точкой, где `p` — общее число цифр, а `s` — число цифр после запятой.

Ограничения (Constraints)

Ограничения — это правила, применяемые к столбцам таблицы.

  • `PRIMARY KEY`: Определяет первичный ключ.
  • `FOREIGN KEY`: Определяет внешний ключ для связи с другой таблицей.
  • `NOT NULL`: Запрещает столбцу иметь значение `NULL`.
  • `UNIQUE`: Гарантирует, что все значения в столбце уникальны.
  • `CHECK`: Проверяет, соответствует ли значение определенному условию.

3. ALTER — Изменение структуры

Команда `ALTER TABLE` позволяет изменять структуру существующей таблицы. Это очень мощная, но и потенциально опасная команда.

  • Добавить столбец:
  • Удалить столбец:
  • Переименовать столбец:
  • Изменить тип данных столбца:
  • Добавить ограничение:
  • Удалить ограничение:
  • Переименовать таблицу:

4. DROP — Удаление объектов

Команда `DROP` используется для полного и безвозвратного удаления объектов из базы данных. Используйте ее с большой осторожностью!

DROP TABLE

Удаляет таблицу и все ее данные.

Если на таблицу ссылаются другие таблицы через внешние ключи, команда вернет ошибку. Чтобы удалить таблицу вместе со всеми зависимыми объектами, используется опция `CASCADE`.

Чтобы избежать ошибки, если таблица не существует, можно использовать `IF EXISTS`.

DROP DATABASE

Удаляет целую базу данных. Эту операцию невозможно отменить.


Практическое задание

DDL-команды применяются в объединенной Практике 3: там нужно создать таблицы для библиотечной базы данных по ER-модели из Практики 2.

Перейти к Практике 3: Реляционная схема библиотеки и начальные данные.