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

Первая база данных

В этой главе используется локальный клиент командной строки radixdb-cli. Он открывает базу напрямую: сервер базы данных и сетевое подключение не нужны. Пример содержит две таблицы: отделы и сотрудники. Каждый сотрудник может относиться к одному отделу.

Для упражнения используйте новый каталог. В оболочке Unix, когда radixdb-cli доступен через PATH, выполните:

Окно терминала
tutorial_dir=$(mktemp -d)
radixdb-cli -d "file://$tutorial_dir/database?sync_mode=full"

Адрес file:// выбирает постоянное хранение. Сохраните переменную оболочки tutorial_dir для следующих сеансов. Каталог базы будет создан внутри неё. Параметр sync_mode=full явно выбирает полную синхронизацию для упражнения; он не гарантирует сохранность данных при физической утрате носителя.

В проверочной базе 1.2 стартовый баннер не отражает режим синхронизации, заданный в адресе. Используйте показанный адрес: отдельный флаг --sync full в этой сборке не работает.

Альтернативный адрес memory:// создаёт базу в пределах процесса, которая не сохраняется после его завершения. Не используйте отдельные сеансы с базой в памяти для последовательных шагов этого учебника.

Введите следующие команды в клиенте. Каждая команда заканчивается точкой с запятой. Выполните подготовку один раз в новой базе:

CREATE TABLE departments (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE employees (
id INTEGER PRIMARY KEY,
department_id INTEGER REFERENCES departments(id),
name TEXT NOT NULL
);
INSERT INTO departments VALUES (1, 'Engineering'), (2, 'Support');
INSERT INTO employees VALUES (1, 1, 'Alice'), (2, 2, 'Boris'), (3, NULL, 'Clara');

PRIMARY KEY идентифицирует строку. NOT NULL требует наличия значения. Предложение REFERENCES объявляет связь между department_id сотрудника и id отдела. У Clara отдел не указан: её department_id содержит NULL, обозначающий отсутствие значения.

SELECT id, name FROM employees ORDER BY id;
id name
1 Alice
2 Boris
3 Clara

ORDER BY явно задаёт порядок строк. Без предложения сортировки нельзя полагаться на порядок, в котором запрос случайно вернул строки.

Введите exit, чтобы закрыть клиент. Откройте тот же адрес file:// и снова выполните SELECT: зафиксированные строки остаются в базе. Сохраните эту базу для следующих упражнений со связями и транзакциями.

Английская и русская страницы используют одни SQL-файлы. Проверка учебника выполняет их на зафиксированной проверочной базе 1.2.