Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

SQL-запросы для просмотра таблиц в SQLite через ATTACH

Быстрый ответ

Вы можете получить список таблиц из подключенного файла базы данных SQLite, выполнив следующий код:

SQL
Скопировать код
SELECT name FROM {alias}.sqlite_master WHERE type='table';

Zаместо {alias} подставьте псевдоним вашей базы данных, и вы получите перечень всех таблиц в ней.

Однако, помимо команд .tables и .schema, SQLite предлагает и другие полезные инструменты для работы с подключенными базами данных. Поговорим о них подробнее.

Кинга Идем в IT: пошаговый план для смены профессии

Визуализация

Можно сравнить владение знаниями SQLite с возможностью добираться до ценности, или жемчужины внутри замка, где каждый трон полон ценными артефактами (в нашем случае это таблицы).

Markdown
Скопировать код
Основная БД (🚪🔓): [Таблица1, Таблица2]       # Основная база данных открыта – она хранит все ключи.
Подключенная БД (🔗🚪🔒): [Таблица3, Таблица4]  # Подключенная база данных – требует особых усилий для открытия. Она пока что заблокирована и безопасна.

Чтобы получить таблицы из подключенной базы данных, нам нужно разблокировать этот "замок".

Markdown
Скопировать код
PRAGMA database_list;            // 🧝‍♂️ – Ваш SQL-маршрут!
ATTACH DATABASE 🚪↪️🔓: [Таблица3, Таблица4]; // ✨🔑✨ – Золотой ключ открыто все секреты этого замка.

Если вы захотите посмотреть список таблиц:

SQL
Скопировать код
PRAGMA attached_db_name.table_info; // Кристальный шар в мире SQL.

Практическое применение подключенных файлов баз данных SQLite

Вывод списка таблиц в подключенной базе данных

Для основной базы данных удобно использовать команду .tables, однако она не применима к подключенным базам данных. В этом случае вы можете воспользоваться командой SELECT name FROM {alias}.sqlite_master WHERE type='table';, подставив соответствующий псевдоним. Эта команда вернет список таблиц из подключенной базы данных.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Изучение схемы таблиц подключенной базы данных

В этом случае нам не подойдет команда .schema tablename. Но незначительная модификация в запросе поможет достичь того, что нам нужно:

SQL
Скопировать код
ATTACH 'example.db' AS exdb;
SELECT sql FROM exdb.sqlite_master WHERE type='table' AND name='your_table';

Хоть это и звучит как взлом, но это абсолютно законно. Возвращается SQL-выражение, которое использовалось при создании таблицы в подключенной базе данных.

Отправка запросов к данным в таблицах подключенной базы данных

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

SQL
Скопировать код
SELECT * FROM exdb.your_table;

Отлично получилось – вы успешно "пролезли" внутрь базы данных!

Временные таблицы: не видно, но они существуют

Временные таблицы невидимы при использовании команды .tables. Вы можете использовать sqlite_temp_master, чтобы найти их с помощью специального SELECT-запроса:

SQL
Скопировать код
SELECT name FROM sqlite_temp_master WHERE type='table'; // Это поиск скрытых таблиц!

Проверка целостности: все данные и названия таблиц

Для получения обзорной информации обо всех таблицах и их названиях в базе данных (включая подключенные), можно обратиться к псевдонимам каждой базы данных и собрать информацию о таблицах из каждого sqlite_master:

SQL
Скопировать код
PRAGMA database_list;
-- замените 'db_alias' на актуальный псевдоним из списка баз данных для каждого запуска.
SELECT name FROM db_alias.sqlite_master WHERE type='table'; // Ваши SQL-помощники!

Команда '.dump' и её ограничения

Нужно учесть, что команда .dump способна выводить полные снимки схем и данных основной базы данных, однако она не работает с подключенными базами данных. Вам придется вручную создавать скрипты или экспортировать данные из подключенных баз данных.

Помощь на пути: подсказки SQLite

В командной строке SQLite есть команда .help – это ваш персональный помощник, который предлагает помощь в работе с командами и информацию о правильном использовании команд, связанных с SQLite. Теперь вы точно не останетесь в замешательстве!

Полезные материалы

  1. Pragma statements supported by SQLiteофициальная документация SQLite о командах PRAGMA для управления списком таблиц.
  2. sql – How can I list the tables in a SQLite database file that was opened with ATTACH? – Stack Overflow. Советы и решения от сообщества по вопросу об отображении таблиц в подключенных базах данных SQLite.
  3. ATTACH DATABASEофициальное описание команды 'ATTACH' в SQLite.
  4. DB Browser for SQLiteвизуализатор для работы с базами данных SQLite.
  5. Command Line Shell For SQLiteдокументация SQLite по использованию командной строки для работы со списком таблиц. Это как команды и базы данных всё в одной песочнице!
  6. SQLite administration | SQLite Expert — профессиональный инструментарий для работы с SQLite.
  7. [4. The SQL Language – Using SQLite [Book]](https://www.oreilly.com/library/view/using-sqlite/9781449394592/ch04.html) — практическое руководство по работе с SQLite, включающее информацию о системных таблицах и каталоговых представлениях, что важно для отображения данных о таблицах.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой SQL-запрос используется для получения списка таблиц из подключенной базы данных в SQLite?
1 / 5