sql >> Database teknologi >  >> RDS >> SQLite

Liste over alle midlertidige tabeller i SQLite

Som med de fleste ting i SQLite, er der mere end én måde at få en liste over midlertidige tabeller i en database på.

Her præsenterer jeg to måder at returnere midlertidige tabeller i SQLite.

.tables-kommandoen

Hvis du er bekendt med SQLite-kommandolinjeskallen, så kender du sikkert til .tables prik kommando. Denne kommando viser alle tabeller, der matcher et givet mønster (eller blot alle tabeller, hvis der ikke er angivet noget mønster). Dette inkluderer midlertidige tabeller.

Eksempel:

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

Resultat:

Products           temp.TempProducts  vProducts 

I dette tilfælde har jeg en permanent tabel (Products ), én visning (vProducts ), og en midlertidig tabel (temp.TempProducts ).

Så du kan se, at både midlertidige og permanente borde returneres. Hvis dine midlertidige tabeller bruger en fast navnekonvention, såsom et præfiks, der kun er reserveret til midlertidige tabeller, kan du bruge mønstermatchning til kun at hente midlertidige tabeller.

Eksempel:

.tables temp%

Resultat:

temp.TempProducts

Navnekonventioner er dog kun gode, så længe alle følger dem.

Hvis du ikke vil have permanente tabeller returneret i dine resultater, er du sandsynligvis bedre stillet at forespørge sqlite_temp_master tabel (nedenfor).

sqlite_temp_master-tabellen

SQLite har en sqlite_temp_master tabel, der indeholder midlertidige tabeller og deres indekser og triggere. Denne tabel er kun synlig for det program, der oprettede den midlertidige tabel.

Du kan forespørge i denne tabel på denne måde:

SELECT name FROM sqlite_temp_master;

Resultat:

TempProducts

I dette eksempel returnerer jeg kun tabelnavnet, men du er velkommen til at bruge en stjerne (* ) for at returnere alle kolonner.

Som nævnt inkluderer denne tabel ikke permanente tabeller. Hvis du skal returnere både midlertidige og permanente tabeller, og du ikke kan bruge .temp , kan du inkludere sqlite_master tabel i din forespørgsel.

Eksempel:

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

Resultat:

Products
TempProducts

Hvis du vil inkludere visninger, skal du gøre dette:

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

Resultat:

Products
TempProducts
vProducts

  1. SQL Inner Join

  2. Sådan fjerner du førende nuller fra datoer i Oracle

  3. mangler nøgleordsfejl i oracle CASE WHEN sql-sætning

  4. Er det muligt at have en indekseret visning i MySQL?