Перейти к содержимому

Связи и запросы

Продолжайте в базе из главы «Первая база данных». В ней три сотрудника, включая Clara, для которой отдел не указан.

Внешний ключ хранит идентификатор отдела. Чтобы прочитать его название, соедините таблицы сотрудников и отделов:

SELECT e.name, d.name AS department
FROM employees AS e
LEFT JOIN departments AS d ON e.department_id = d.id
ORDER BY e.id;
name department
Alice Engineering
Boris Support
Clara NULL

LEFT JOIN сохраняет каждого сотрудника, даже если подходящего отдела нет. Тогда выбранное название отдела равно NULL. Внутреннее соединение исключило бы сотрудников без соответствующего отдела.

RadixDB может вывести ту же связь из объявленного внешнего ключа:

SELECT e.name, e.department_id.name AS department
FROM employees AS e
ORDER BY e.id;

Результат совпадает с таблицей выше. Псевдоним e выбирает строку сотрудника, department_id — её столбец внешнего ключа, а name принадлежит отделу, на который он ссылается. Чтение только e.department_id по-прежнему возвращает значение ключа.

Навигация — способ записи запроса, а не объект, хранящийся в столбце. Пример проходит по одной объявленной связи и не означает поддержку произвольного обхода графа или изменения данных через путь.

SQL-глава «Навигация по ссылкам» подробно описывает цепочки, NULL, группировку, диагностику и постоянную границу записи.

Перейдите к транзакциям.