sql >> Databáze >  >> RDS >> SQLite

Seznam všech dočasných tabulek v SQLite

Stejně jako u většiny věcí v SQLite existuje více než jeden způsob, jak získat seznam dočasných tabulek v databázi.

Zde uvádím dva způsoby, jak vrátit dočasné tabulky v SQLite.

Příkaz .tables

Pokud znáte prostředí příkazového řádku SQLite, pravděpodobně budete vědět o .tables příkaz tečka. Tento příkaz vypíše všechny tabulky odpovídající danému vzoru (nebo jednoduše všechny tabulky, pokud není zadán žádný vzor). To zahrnuje dočasné tabulky.

Příklad:

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

Výsledek:

Products           temp.TempProducts  vProducts 

V tomto případě mám jednu stálou tabulku (Products ), jedno zobrazení (vProducts ) a jednu dočasnou tabulku (temp.TempProducts ).

Můžete tedy vidět, že jsou vráceny dočasné i trvalé tabulky. Pokud vaše dočasné tabulky používají pevnou konvenci pojmenování, jako je předpona vyhrazená pouze pro dočasné tabulky, můžete použít porovnávání vzorů k načtení pouze dočasných tabulek.

Příklad:

.tables temp%

Výsledek:

temp.TempProducts

Konvence pojmenování jsou však dobré jen tehdy, pokud je všichni dodržují.

Pokud nechcete, aby se ve výsledcích vracely trvalé tabulky, pravděpodobně bude lepší zadat dotaz na sqlite_temp_master tabulka (níže).

Tabulka sqlite_temp_master

SQLite má sqlite_temp_master tabulka, která obsahuje dočasné tabulky a jejich indexy a spouštěče. Tato tabulka je viditelná pouze pro aplikaci, která dočasnou tabulku vytvořila.

Tuto tabulku můžete dotazovat takto:

SELECT name FROM sqlite_temp_master;

Výsledek:

TempProducts

V tomto příkladu vracím pouze název tabulky, ale klidně použijte hvězdičku (* ) vrátíte všechny sloupce.

Jak již bylo zmíněno, tato tabulka nezahrnuje stálé tabulky. Pokud potřebujete vrátit dočasné i trvalé tabulky a nemůžete použít .temp , můžete zahrnout sqlite_master tabulka ve vašem dotazu.

Příklad:

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

Výsledek:

Products
TempProducts

Pokud chcete zahrnout pohledy, postupujte takto:

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

Výsledek:

Products
TempProducts
vProducts

  1. Získejte počet dní mezi dvěma daty v Oracle, včetně dat

  2. Jak funguje DAYOFYEAR() v MariaDB

  3. Výstup výsledků dotazu SQLite jako seznam oddělený tabulátory

  4. Upozornění:Převod pole na řetězec v