Первая база данных
В этой главе используется локальный клиент командной строки 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.