SQL-запросы для просмотра таблиц в SQLite через ATTACH
Быстрый ответ
Вы можете получить список таблиц из подключенного файла базы данных SQLite, выполнив следующий код:
SELECT name FROM {alias}.sqlite_master WHERE type='table';
Zаместо {alias}
подставьте псевдоним вашей базы данных, и вы получите перечень всех таблиц в ней.
Однако, помимо команд .tables
и .schema
, SQLite предлагает и другие полезные инструменты для работы с подключенными базами данных. Поговорим о них подробнее.
Визуализация
Можно сравнить владение знаниями SQLite с возможностью добираться до ценности, или жемчужины внутри замка, где каждый трон полон ценными артефактами (в нашем случае это таблицы).
Основная БД (🚪🔓): [Таблица1, Таблица2] # Основная база данных открыта – она хранит все ключи.
Подключенная БД (🔗🚪🔒): [Таблица3, Таблица4] # Подключенная база данных – требует особых усилий для открытия. Она пока что заблокирована и безопасна.
Чтобы получить таблицы из подключенной базы данных, нам нужно разблокировать этот "замок".
PRAGMA database_list; // 🧝♂️ – Ваш SQL-маршрут!
ATTACH DATABASE 🚪↪️🔓: [Таблица3, Таблица4]; // ✨🔑✨ – Золотой ключ открыто все секреты этого замка.
Если вы захотите посмотреть список таблиц:
PRAGMA attached_db_name.table_info; // Кристальный шар в мире SQL.
Практическое применение подключенных файлов баз данных SQLite
Вывод списка таблиц в подключенной базе данных
Для основной базы данных удобно использовать команду .tables
, однако она не применима к подключенным базам данных. В этом случае вы можете воспользоваться командой SELECT name FROM {alias}.sqlite_master WHERE type='table';
, подставив соответствующий псевдоним. Эта команда вернет список таблиц из подключенной базы данных.
Изучение схемы таблиц подключенной базы данных
В этом случае нам не подойдет команда .schema tablename
. Но незначительная модификация в запросе поможет достичь того, что нам нужно:
ATTACH 'example.db' AS exdb;
SELECT sql FROM exdb.sqlite_master WHERE type='table' AND name='your_table';
Хоть это и звучит как взлом, но это абсолютно законно. Возвращается SQL-выражение, которое использовалось при создании таблицы в подключенной базе данных.
Отправка запросов к данным в таблицах подключенной базы данных
Чтобы сделать запрос данных из таблицы подключенной базы данных, необходимо выполнить команду SELECT
, указав в качестве префикса таблицы псевдоним данной базы данных:
SELECT * FROM exdb.your_table;
Отлично получилось – вы успешно "пролезли" внутрь базы данных!
Временные таблицы: не видно, но они существуют
Временные таблицы невидимы при использовании команды .tables
. Вы можете использовать sqlite_temp_master
, чтобы найти их с помощью специального SELECT-запроса:
SELECT name FROM sqlite_temp_master WHERE type='table'; // Это поиск скрытых таблиц!
Проверка целостности: все данные и названия таблиц
Для получения обзорной информации обо всех таблицах и их названиях в базе данных (включая подключенные), можно обратиться к псевдонимам каждой базы данных и собрать информацию о таблицах из каждого sqlite_master
:
PRAGMA database_list;
-- замените 'db_alias' на актуальный псевдоним из списка баз данных для каждого запуска.
SELECT name FROM db_alias.sqlite_master WHERE type='table'; // Ваши SQL-помощники!
Команда '.dump' и её ограничения
Нужно учесть, что команда .dump
способна выводить полные снимки схем и данных основной базы данных, однако она не работает с подключенными базами данных. Вам придется вручную создавать скрипты или экспортировать данные из подключенных баз данных.
Помощь на пути: подсказки SQLite
В командной строке SQLite есть команда .help
– это ваш персональный помощник, который предлагает помощь в работе с командами и информацию о правильном использовании команд, связанных с SQLite. Теперь вы точно не останетесь в замешательстве!
Полезные материалы
- Pragma statements supported by SQLite — официальная документация SQLite о командах PRAGMA для управления списком таблиц.
- sql – How can I list the tables in a SQLite database file that was opened with ATTACH? – Stack Overflow. Советы и решения от сообщества по вопросу об отображении таблиц в подключенных базах данных SQLite.
- ATTACH DATABASE — официальное описание команды 'ATTACH' в SQLite.
- DB Browser for SQLite — визуализатор для работы с базами данных SQLite.
- Command Line Shell For SQLite — документация SQLite по использованию командной строки для работы со списком таблиц. Это как команды и базы данных всё в одной песочнице!
- SQLite administration | SQLite Expert — профессиональный инструментарий для работы с SQLite.
- [4. The SQL Language – Using SQLite [Book]](https://www.oreilly.com/library/view/using-sqlite/9781449394592/ch04.html) — практическое руководство по работе с SQLite, включающее информацию о системных таблицах и каталоговых представлениях, что важно для отображения данных о таблицах.