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

Wyświetl wszystkie tabele tymczasowe w SQLite

Podobnie jak w przypadku większości rzeczy w SQLite, istnieje więcej niż jeden sposób na uzyskanie listy tymczasowych tabel w bazie danych.

Tutaj przedstawiam dwa sposoby na zwrócenie tabel tymczasowych w SQLite.

Polecenie .tables

Jeśli znasz powłokę wiersza poleceń SQLite, prawdopodobnie wiesz o .tables polecenie kropka. To polecenie wyświetla wszystkie tabele pasujące do danego wzorca (lub po prostu wszystkie tabele, jeśli nie podano wzorca). Obejmuje to tabele tymczasowe.

Przykład:

CREATE TEMP TABLE TempProducts (id, name, price);
.tables

Wynik:

Products           temp.TempProducts  vProducts 

W tym przypadku mam jedną stałą tabelę (Products ), jeden widok (vProducts ) i jedną tabelę tymczasową (temp.TempProducts ).

Możesz więc zobaczyć, że zwracane są zarówno tabele tymczasowe, jak i stałe. Jeśli twoje tabele tymczasowe używają ustalonej konwencji nazewnictwa, na przykład prefiksu zarezerwowanego tylko dla tabel tymczasowych, możesz użyć dopasowania do wzorca, aby pobrać tylko tabele tymczasowe.

Przykład:

.tables temp%

Wynik:

temp.TempProducts

Jednak konwencje nazewnictwa są dobre tylko wtedy, gdy wszyscy ich przestrzegają.

Jeśli nie chcesz, aby w wynikach były zwracane stałe tabele, prawdopodobnie lepiej odpytać sqlite_temp_master tabela (poniżej).

Tabela sqlite_temp_master

SQLite ma sqlite_temp_master tabela zawierająca tabele tymczasowe oraz ich indeksy i wyzwalacze. Ta tabela jest widoczna tylko dla aplikacji, która utworzyła tabelę tymczasową.

Możesz zapytać o tę tabelę w ten sposób:

SELECT name FROM sqlite_temp_master;

Wynik:

TempProducts

W tym przykładzie zwracam tylko nazwę tabeli, ale możesz użyć gwiazdki (* ), aby zwrócić wszystkie kolumny.

Jak wspomniano, ta tabela nie obejmuje stałych stolików. Jeśli potrzebujesz zwrócić zarówno tabele tymczasowe, jak i stałe, i nie możesz użyć .temp , możesz dołączyć sqlite_master tabeli w zapytaniu.

Przykład:

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

Wynik:

Products
TempProducts

Jeśli chcesz uwzględnić widoki, wykonaj następujące czynności:

SELECT name FROM 
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE type in ('table', 'view')
ORDER BY name;

Wynik:

Products
TempProducts
vProducts

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite Listview onclick filtruje bazę danych, aby otworzyć wynik w nowej aktywności

  2. Jak uzyskać aktualną datę w SQLite?

  3. Zapisz dane w metodzie onDestroy aktywności

  4. Pobierz bazę danych lub dowolny inny plik z pamięci wewnętrznej za pomocą funkcji run-as

  5. Biblioteka Android Room nie może skopiować bazy danych z zasobu