SQLite
 sql >> база данни >  >> RDS >> SQLite

2 начина за изброяване на таблиците в база данни на SQLite

Ето два начина за връщане на списък с таблици във всички прикачени бази данни в SQLite.

Първият метод връща всички таблици и изгледи за всички прикачени бази данни.

Вторият метод ви дава възможност да връщате както таблици, така и изгледи, или само таблици, но само за основната база данни.

Актуализиране през декември 2021 г. :От написването на тази статия SQLite въведе друга опция, която посочих като бонус трета опция в края на тази статия.

Командата .tables

Най-лесният начин да върнете списък с таблици, когато използвате обвивката на командния ред на SQLite, е да използвате .tables команда.

Тази команда може да се използва със или без аргумент. Ако го използвате без да предоставите аргумент, той връща всички таблици (и изгледи) за всички прикачени бази данни.

Пример:

.tables

Резултат:

Album          Employee       InvoiceLine    PlaylistTrack
Artist         Genre          MediaType      Track        
Customer       Invoice        Playlist     

В моя случай има само една прикачена база данни (примерната база данни на Chinook) и всички таблици на тази база данни се връщат.

Както споменахме, можете също да предоставите аргумент на тази команда. Такъв аргумент може да се използва за ограничаване на таблиците, върнати от командата. Например, можете да наименувате конкретна таблица или можете да използвате съвпадение на шаблон, за да върнете само таблици, които съответстват на даден модел.

Пример:

.tables a%

Резултат:

Album   Artist

В този случай се връщат само таблици, които започват с буквата „a“.

Едно нещо, което трябва да имате предвид е, че .tables командата връща и двете таблици и изгледи. Ако искате да изключите изгледи от резултатите си, можете да използвате съвпадение на шаблони, за да изключите изгледи. Това ще работи само ако изгледите ви използват конвенция за именуване, която ги отличава от таблици и други обекти.

Друг начин да изключите изгледи от резултатите си е да направите заявка за sqlite_schema маса директно. Въпреки че тази таблица също съдържа изгледи, можете да използвате SQL, за да ги изключите от вашите резултати, ако е необходимо.

Таблицата sqlite_schema

Всяка база данни на SQLite има sqlite_schema таблица, която дефинира схемата за базата данни. Можете да използвате тази таблица, за да върнете списък с таблици във вашата база данни.

Когато използвате .tables команда, това е подобно на това:

SELECT name FROM sqlite_schema 
WHERE type IN ('table','view') 
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Все пак има разлика.

Разликата е, че този метод връща резултати само за основния база данни (.tables командата връща резултати за всички прикачени бази данни).

Изпълнението на горната заявка връща следния резултат:

Album
Artist
Customer
Employee
Genre
Invoice
InvoiceLine
MediaType
Playlist
PlaylistTrack
Track

Тази заявка връща и двете таблици и изгледи (точно както .tables команда прави).

В моя случай няма изгледи, но ако искате да изключите изгледи в резултатите, използвайте това:

SELECT name FROM sqlite_schema 
WHERE type = 'table' 
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Резултат:

Album
Artist
Customer
Employee
Genre
Invoice
InvoiceLine
MediaType
Playlist
PlaylistTrack
Track

sqlite_schema таблицата може да бъде достъпна и чрез sqlite_master .

Изключване на изгледи

За пълнота, ето един бърз пример, който използва база данни с изглед. Тази база данни съдържа една таблица (наречена Продукти). ) и един изглед (наречен vProducts). ).

Свържете се със SQLite/базата данни:

sqlite3 Store.db

Стартирайте .tables команда:

.tables

Резултат:

Products   vProducts

Заявете за sqlite_schema таблица за таблици и изгледи:

SELECT name FROM sqlite_schema 
WHERE type IN ('table','view') 
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Резултат:

Products
vProducts

Сега заявете sqlite_schema за таблици само :

SELECT name FROM sqlite_schema 
WHERE type = 'table' 
AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Резултат:

Products

Временни таблици

.table командата връща както постоянни, така и временни таблици. sqlite_schema таблицата съдържа само постоянни таблици. Ако трябва да върнете само временните таблици, можете да заявите sqlite_temp_schema или неговия синоним sqlite_temp_master .

За да върнете както постоянни, така и временни таблици, можете да използвате заявка като тази:

SELECT name FROM 
   (SELECT * FROM sqlite_schema UNION ALL
    SELECT * FROM sqlite_temp_schema)
WHERE type='table'
ORDER BY name;

Бонус 3-та опция:Прагматичната декларация table_list

Откакто за първи път написах тази статия, SQLite въведе table_list изявление на pragma, което изброява таблици и изгледи:

PRAGMA table_list;

Вижте PRAGMA table_list в SQLite за преглед и примери.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.util.MissingFormatArgumentException:Спецификатор на формат:s

  2. Поставяне на данни за курсора в масив

  3. SQLite - Актуализиране на данни

  4. Използвайте Firebase DB с локална DB

  5. Получаване на колона от .sqlite, съдържаща множество таблици с множество колони