Цифровые инструменты · Блог ОбрПрофи
Основы баз данных: таблицы, ключи и запросы SQL
Реляционная база данных хранит сведения в таблицах, связанных ключами. SQL позволяет выбирать, соединять и обрабатывать записи. Для понимания запроса сначала определите смысл строки и условие связи, затем проверьте количество записей и итог на небольшом наборе данных.

В этой статье
Таблицы клиентов и заказов
Возьмём вымышленный учёт. В таблице клиентов одна строка описывает клиента: идентификатор и название. В таблице заказов строка описывает заказ: собственный номер, идентификатор клиента и сумма. Один клиент может иметь несколько заказов, поэтому его описание хранится отдельно от покупок.
Клиент 1 — Север, клиент 2 — Юг. У первого заказы 100 и 200 рублей, у второго — 300 рублей. Для связи используем идентификатор, для отображения — название. Если название изменится, связь по ключу может сохраниться; не нужно искать заказы по текстовому совпадению имени.
Различайте ключ и обычный столбец
Первичный ключ однозначно идентифицирует строку: его значение или сочетание значений уникально и не допускает NULL. Внешний ключ проверяет ссылку на допустимую запись — в другой или той же таблице. В документации PostgreSQL показано, как ограничение отклоняет ссылку на несуществующую запись.
У заказа хранится идентификатор клиента. Проверка такой ссылки не доказывает правильность цены или имени: это другой уровень контроля. Отдельно определяют, обязательна ли связь, как обрабатывают неизвестное значение и что происходит при изменении связанных записей. Для введения достаточно записать вопросы к схеме, не проектируя промышленную систему.
- Левая таблица
- Ключ соединения
- INNER или LEFT
- Строки результата
Результат зависит от ключа и кратности совпадений. Пример с числами разобран ниже.
Простой запрос SELECT
SELECT задаёт возвращаемые поля, FROM — источник, WHERE — условие, ORDER BY — порядок результата. В нашем примере запрос «SELECT id, amount FROM orders WHERE amount > 150 ORDER BY id» отберёт заказы 200 и 300 рублей. Названия таблицы и столбцов относятся к вымышленному набору.
Проверьте условие на границе: заказ 150 рублей не пройдёт «>150», но пройдёт «>= 150». Добавление такого случая помогает увидеть разницу. Сначала объясните результат простой выборки вручную, затем добавляйте новые условия и соединения.
Разобрать тему на курсе
Основы баз данных: таблицы, связи и простые запросы · 12 часов
1 900 ₽
Посмотреть программу
Проверьте смысл соединения
JOIN сопоставляет строки по заданному условию. INNER JOIN оставляет совпавшие пары; LEFT JOIN сохраняет строки левой таблицы и при отсутствии пары возвращает NULL для полей справа. Связь один ко многим может дать несколько строк для одного клиента.
Соединение двух клиентов и трёх заказов даёт три совпавшие строки, а не две. Сумма заказов каждого клиента равна 300 рублей. Добавим клиента 3 без заказа: внутреннее соединение его не покажет, левое покажет с отсутствующими полями заказа. Количество клиентов и количество строк результата теперь особенно важно различать.
Как проверить число строк и сумму
Перед усложнением запроса посчитайте контрольные итоги вручную. В нашем наборе у Севера два заказа на 100 и 200 рублей, у Юга один на 300: общий итог — 600 рублей, клиентов — два, заказов — три. После добавления третьего клиента без заказа INNER JOIN даёт три строки, LEFT JOIN — четыре, а сумма существующих заказов остаётся 600 рублей. Сравнивайте отдельно число клиентов, число заказов и денежный итог.
Для суммы по клиентам нужен групповой расчёт по соответствующему ключу. Отдельно проверьте кратность соединения: лишняя связь может размножить строки и увеличить итог. При проектировании реальной базы дополнительно нужны правила доступа, изменения и восстановления; простая схема помогает освоить саму логику данных.
Пример соединения: количество строк
Пример с условными данными.
| Схема | INNER JOIN, строк | LEFT JOIN, строк |
|---|---|---|
| 2 клиента и 3 заказа | 3 | 3 |
| Добавлен клиент без заказа | 3 | 4 |
Что проверить на практике
- У каждой таблицы определён смысл строки
- Идентификаторы и названия разделены
- Связь один ко многим объяснена на примере
- Условие выборки проверено на границе
- INNER JOIN и LEFT JOIN различаются осознанно
- Число строк и итог сверены вручную
Вопросы по теме
Что означает строка таблицы?
Запись об одной сущности или событии; смысл строки определяют при проектировании.
Для чего нужен первичный ключ?
Чтобы однозначно идентифицировать запись таблицы.
Что проверяет внешний ключ?
Связь с допустимой записью другой таблицы; это не проверка всех смысловых ошибок данных.
Почему после JOIN стало больше строк?
Одна запись может совпасть с несколькими связанными записями. Нужно проверить условие и кратность связи.
Чем LEFT JOIN отличается от INNER JOIN?
LEFT JOIN сохраняет строки левой таблицы при отсутствии совпадения справа; INNER JOIN оставляет совпавшие пары.
Почему сумма после соединения таблиц может оказаться завышенной?
Одна запись может получить несколько совпадений в другой таблице. Если это не учтено, сумма повторится по каждой паре. Проверьте условие соединения, ключи и ожидаемую кратность до группового расчёта.
Обсудим обучение?
Основы баз данных: таблицы, связи и простые запросы
1 900 ₽
Оставьте телефон — менеджер ответит на вопросы о программе и условиях обучения.

Источники и границы проверки
- PostgreSQL: учебное введение в SQL
- PostgreSQL: внешние ключи
- PostgreSQL: соединение таблиц
- PostgreSQL: первичные и внешние ключи, разделы 5.5.4–5.5.5
Определения ключей и логика соединений сверены с документацией PostgreSQL. Набор клиентов и заказов — вымышленный пример. Синтаксис конкретной СУБД и свойства рабочей базы нужно проверять отдельно; здесь показана логика выборки и контроль результата.