SQLite
 sql >> Baza danych >  >> RDS >> SQLite

2 sposoby na wyświetlenie tabel w bazie danych SQLite

Oto dwa sposoby na zwrócenie listy tabel we wszystkich dołączonych bazach danych w SQLite.

Pierwsza metoda zwraca wszystkie tabele i widoki dla wszystkich dołączonych baz danych.

Druga metoda daje możliwość zwrócenia zarówno tabel, jak i widoków lub tylko tabel, ale tylko dla podstawowej bazy danych.

Aktualizacja grudnia 2021 :Od czasu napisania tego artykułu, SQLite wprowadził kolejną opcję, którą wymieniłem jako dodatkową trzecią opcję na końcu tego artykułu.

Polecenie .tables

Najłatwiejszym sposobem na zwrócenie listy tabel podczas korzystania z powłoki wiersza poleceń SQLite jest użycie .tables Komenda.

To polecenie może być używane z argumentem lub bez. Jeśli użyjesz go bez podania argumentu, zwróci wszystkie tabele (i widoki) dla wszystkich dołączonych baz danych.

Przykład:

.tables

Wynik:

Album          Employee       InvoiceLine    PlaylistTrack
Artist         Genre          MediaType      Track        
Customer       Invoice        Playlist     

W moim przypadku jest tylko jedna dołączona baza danych (przykładowa baza danych Chinook) i wszystkie tabele tej bazy danych są zwracane.

Jak wspomniano, możesz również podać argument do tego polecenia. Taki argument może być użyty do ograniczenia tabel zwracanych przez polecenie. Na przykład możesz nazwać określoną tabelę lub użyć dopasowania do wzorca, aby zwrócić tylko tabele, które pasują do danego wzorca.

Przykład:

.tables a%

Wynik:

Album   Artist

W tym przypadku zwracane są tylko tabele zaczynające się na literę „a”.

Należy pamiętać, że .tables polecenie zwraca obie tabele i wyświetlenia. Jeśli chcesz wykluczyć widoki z wyników, możesz użyć dopasowania do wzorca, aby wykluczyć widoki. To zadziała tylko wtedy, gdy twoje widoki używają konwencji nazewnictwa, która odróżnia je od tabel i innych obiektów.

Innym sposobem wykluczenia wyświetleń z wyników jest zapytanie o sqlite_schema stół bezpośrednio. Chociaż ta tabela zawiera również widoki, możesz użyć SQL, aby w razie potrzeby wykluczyć je z wyników.

Tabela sqlite_schema

Każda baza danych SQLite ma sqlite_schema tabela definiująca schemat bazy danych. Możesz użyć tej tabeli do zwrócenia listy tabel w Twojej bazie danych.

Kiedy używasz .tables polecenie, działa podobnie do tego:

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

Jest jednak różnica.

Różnica polega na tym, że ta metoda zwraca tylko wyniki dla podstawowego baza danych (.tables polecenie zwraca wyniki dla wszystkich dołączone bazy danych).

Uruchomienie powyższego zapytania zwraca następujący wynik:

Album
Artist
Customer
Employee
Genre
Invoice
InvoiceLine
MediaType
Playlist
PlaylistTrack
Track

To zapytanie zwraca obie tabele i widoki (tak jak .tables polecenie robi).

W moim przypadku nie ma żadnych widoków, ale jeśli chcesz wykluczyć widoki w wynikach, użyj tego:

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

Wynik:

Album
Artist
Customer
Employee
Genre
Invoice
InvoiceLine
MediaType
Playlist
PlaylistTrack
Track

sqlite_schema dostęp do tabeli można również uzyskać za pomocą sqlite_master .

Wyklucz widoki

W trosce o kompletność, oto krótki przykład, który wykorzystuje bazę danych z widokiem. Ta baza danych zawiera jedną tabelę (o nazwie Produkty ) i jeden widok (nazywany vProducts ).

Połącz się z SQLite/bazą danych:

sqlite3 Store.db

Uruchom .tables polecenie:

.tables

Wynik:

Products   vProducts

Zapytanie o sqlite_schema tabela dla tabel i widoki:

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

Wynik:

Products
vProducts

Teraz zapytanie sqlite_schema dla stołów tylko :

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

Wynik:

Products

Tabele tymczasowe

.table polecenie zwraca zarówno tabele stałe, jak i tabele tymczasowe. sqlite_schema tabela zawiera tylko stałe tabele. Jeśli chcesz zwrócić tylko tabele tymczasowe, możesz wykonać zapytanie sqlite_temp_schema lub jego synonim sqlite_temp_master .

Aby zwrócić zarówno tabele stałe, jak i tabele tymczasowe, możesz użyć zapytania w ten sposób:

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

Dodatkowa trzecia opcja:instrukcja Pragma table_list

Odkąd po raz pierwszy napisałem ten artykuł, SQLite wprowadził table_list oświadczenie pragma, które zawiera listę tabel i widoków:

PRAGMA table_list;

Zobacz PRAGMA table_list w SQLite, aby uzyskać przegląd i przykłady.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pułapki i pułapki SQLite

  2. Wybór bazy danych do tworzenia dwóch połączonych tabel?

  3. Jak uzyskać wiersz w SQLite według indeksu (nie według identyfikatora)

  4. Utwórz kopię zapasową/przywróć bazę danych SQLlite do folderu aplikacji Dysk Google

  5. Jak korzystać z ROW_NUMBER w sqlite