Утилита sqlite3 и создание базы
Учимся работать с SQLite из терминала с помощью утилиты sqlite3.
sqlite3 — это маленькая консольная программа, которая открывает файл базы SQLite и позволяет выполнять SQL-запросы и служебные команды вручную.
Где взять sqlite3
Сама библиотека SQLite уже встроена во многие системы. Отдельная утилита командной строки sqlite3 ставится так:
# macOS (обычно уже есть; иначе через Homebrew)
brew install sqlite
# Debian / Ubuntu
sudo apt install sqlite3
# Windows: скачайте sqlite-tools с официального сайта sqlite.org
# и распакуйте sqlite3.exe в любую папку из PATH
Проверить, что всё установилось, можно командой sqlite3 --version — она напечатает номер версии.
Создаём базу — это просто файл
Чтобы создать или открыть базу, передайте утилите имя файла. Если файла нет, он будет создан (фактически — при первой записи данных).
sqlite3 shop.db
После этого вы попадаете в интерактивную оболочку с приглашением sqlite>. Здесь можно вводить SQL (он должен заканчиваться точкой с запятой ;) и особые «точечные» команды, которые начинаются с точки и управляют самой оболочкой.
Точечные команды (dot-команды)
Точечные команды — это не SQL, а инструкции самой утилите sqlite3. Самые полезные:
| Команда | Что делает |
.tables | список таблиц в базе |
.schema | показать SQL создания всех таблиц |
.schema users | схему конкретной таблицы |
.headers on | печатать имена столбцов над результатом |
.mode column | выводить результат ровными колонками |
.mode csv | выводить результат как CSV |
.read file.sql | выполнить SQL из файла |
.quit | выйти из оболочки |
Пример сессии в терминале
Создадим базу, таблицу и посмотрим на неё разными способами:
sqlite3 shop.db
sqlite> CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);
sqlite> INSERT INTO users (name) VALUES ('Аня'), ('Борис');
sqlite> .tables
sqlite> .schema users
sqlite> .headers on
sqlite> .mode column
sqlite> SELECT * FROM users;
sqlite> .quit
По умолчанию sqlite3 печатает строки, разделяя столбцы вертикальной чертой. После .headers on и .mode column вывод последнего запроса станет аккуратной таблицей:
Вывод:
id name -- ----- 1 Аня 2 Борис
Запуск SQL без входа в оболочку
Иногда удобно выполнить один запрос и сразу выйти. Для этого SQL передают прямо в команду:
# выполнить запрос и вернуться в терминал
sqlite3 shop.db "SELECT count(*) FROM users;"
# выполнить весь скрипт из файла
sqlite3 shop.db ".read seed.sql"
А полностью одноразовую базу в оперативной памяти (она исчезнет после выхода) открывают так: sqlite3 :memory:. Это любимый приём для тестов.
Итог
sqlite3 файл.dbоткрывает или создаёт базу и пускает в интерактивную оболочку.- Точечные команды (
.tables,.schema,.mode,.headers) управляют оболочкой, а не данными. - SQL можно выполнять и из оболочки, и одной строкой из терминала, и из файла через
.read.