DDL / СхемаНачальный
CREATE TABLE
Создаёт новую таблицу с определёнными колонками и ограничениями.
Синтаксис
CREATE TABLE table_name ( column_name data_type [constraints], ... );
Объяснение
CREATE TABLE определяет структуру таблицы: колонки, типы данных, ограничения (NOT NULL, UNIQUE, CHECK, PRIMARY KEY, FOREIGN KEY).
В PostgreSQL рекомендуется:
- id: BIGINT GENERATED ALWAYS AS IDENTITY (вместо SERIAL)
- created_at: TIMESTAMPTZ (с часовым поясом)
- Явные NOT NULL где нужно
Пример
CREATE TABLE users ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, email VARCHAR(255) NOT NULL UNIQUE, name TEXT NOT NULL, is_active BOOLEAN NOT NULL DEFAULT true, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() );
Связанные термины
ALTER TABLEИзменяет структуру существующей таблицы: добавляет колонки, меняет типы, добавляет ограничения.FOREIGN KEYОграничение, связывающее колонку с первичным ключом другой таблицы. Обеспечивает ссылочную целостность.PRIMARY KEYУникальный идентификатор строки. Автоматически создаёт уникальный индекс, не допускает NULL.Типы данныхОпределяют какие значения можно хранить в колонке и как они обрабатываются.
Анекдоты по теме
— Как отличить Junior от Senior в SQL? Junior пишет SELECT * FROM таблица. Senior пишет SELECT id, имя, фамилия FROM таблица. А потом добавляет WHERE и ORDER BY. И только потом запускает.
— Что такое третья нормальная форма? — Нет транзитивных зависимостей. — Пример? — employees(id, dept_id, dept_name). dept_name зависит от dept_id, а не от id сотрудника. — Как исправить? — Отдельная таблица departments. — Зачем? — Изменить название отдела — в одном месте, не в тысяче строк.
Пользователь: — Почему мой запрос ничего не вернул? DBA: — А ты проверил регистр? Пользователь: — Да. DBA: — А пробелы? Пользователь: — Да. DBA: — А кодировку? Пользователь: — О господи...