Справочник курса
Единая терминология курса. Термины даются парами: SQL-слово и теоретическое понятие из реляционной модели. ✓ пройдено — отмечает, что тема разобрана в уроке.
Таблица / отношение table / relation ✓ урок 1
Именованный набор строк с фиксированным списком столбцов. В теории реляционных БД это «отношение». Таблица — это множество строк: порядок строк не определён, пока вы явно не закажете сортировку.
Пример: таблица users со столбцами email, created_at.
Строка / запись / кортеж row / record / tuple ✓ урок 1
Один элемент таблицы — набор значений по всем столбцам. Физически Postgres хранит строку как «кортеж» (tuple) внутри страницы на диске.
Пример: ('ann@x.io', '2026-06-18') — одна строка в users.
Столбец / поле / атрибут column / field / attribute ✓ урок 1
Именованная характеристика с одним фиксированным типом для всех строк. Тип — это контракт: в столбец нельзя положить значение другого типа.
Пример: столбец created_at типа date.
Тип данных data type ✓ урок 1
Множество допустимых значений столбца и операций над ними. Базовые в Postgres: integer/bigint, text, boolean, date/timestamptz, numeric, uuid.
Схема schema
Два смысла. (1) Структура базы — список таблиц, столбцов, типов, ключей («схема данных»). (2) Пространство имён внутри базы (объект SCHEMA, по умолчанию public), в котором лежат таблицы. В курсе «схема» по умолчанию = смысл (1), если не сказано иное.
NULL null ✓ урок 1
Особое значение «нет данных / неизвестно». Это не ноль и не пустая строка. Сравнение с NULL через = даёт не «истину/ложь», а «неизвестно»; проверяют через IS NULL / IS NOT NULL.
Ограничение целостности constraint ✓ урок 2
Правило, которое СУБД проверяет при каждой записи и не даёт нарушить. Виды: NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK.
NOT NULL not null ✓ урок 2
Запрещает NULL в столбце — значение обязано присутствовать в каждой строке.
Уникальность UNIQUE ✓ урок 2
Запрещает повторы значений в столбце (или наборе столбцов). Допускает NULL (в отличие от первичного ключа).
Первичный ключ / ПК PRIMARY KEY · PK ✓ урок 2
Столбец (или набор), который уникально идентифицирует каждую строку. Это UNIQUE + NOT NULL плюс метка «это и есть идентификатор строки». На таблицу — только один. Автоматически создаёт уникальный индекс-B-дерево.
Внешний ключ / ВК FOREIGN KEY · FK
Столбец, который ссылается на первичный ключ другой (или той же) таблицы. Гарантирует ссылочную целостность: нельзя сослаться на несуществующую строку. Поведение при удалении/обновлении задаётся ON DELETE / ON UPDATE.
Суррогатный ключ surrogate key
Искусственный идентификатор без смысла в предметной области (автоинкремент id, uuid). Противоположность — естественный ключ (значение из реального мира: email, ИНН).
IDENTITY / SERIAL GENERATED … AS IDENTITY
Способ автоматически генерировать растущие целочисленные id. Современный рекомендованный синтаксис — GENERATED ALWAYS AS IDENTITY; старый — serial/bigserial. Под капотом использует последовательность (sequence).
Последовательность sequence
Отдельный объект-счётчик, выдающий следующее число. Питает IDENTITY/serial. Выдаёт значения без «дыр»-гарантии: при откате транзакции номер не возвращается.
UUID uuid
128-битный глобально уникальный идентификатор (напр. 550e8400-e29b-41d4-a716-446655440000). Альтернатива числовому id, когда нужна уникальность без обращения к серверу или сокрытие порядка/количества.
Индекс index
Дополнительная структура данных, ускоряющая поиск строк по значению столбца — ценой места на диске и замедления записи. По умолчанию в Postgres — B-дерево.
B-дерево B-tree
Сбалансированное дерево, хранящее значения в отсортированном порядке. Даёт быстрый поиск по равенству и по диапазону (=, <, >, BETWEEN, сортировка). Тип индекса по умолчанию.
Seq Scan / Index Scan sequential / index scan
Два способа найти строки. Seq Scan — прочитать всю таблицу подряд. Index Scan — найти нужное через индекс. Какой выбрать, решает планировщик; увидеть его выбор можно командой EXPLAIN.
Куча / страница / TID heap / page / TID
Физическое хранение. Строки лежат в «куче» (heap) — файле из страниц по 8 КБ. Адрес строки — TID (номер страницы + номер строки в ней). Индекс по сути отображает значение → TID.
psql psql
Штатный консольный клиент PostgreSQL: подключиться к базе и выполнять SQL. Полезные команды: \dt (список таблиц), \d имя (структура таблицы), \q (выход).
DDL / DML DDL / DML
DDL — язык описания структуры: CREATE TABLE, ALTER TABLE, DROP. DML — язык работы с данными: SELECT, INSERT, UPDATE, DELETE.