Лекция 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: Реляционная схема библиотеки и начальные данные.