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

4 modi per elencare le viste in un database SQLite

Ecco quattro opzioni per mostrare tutte le viste all'interno di un database SQLite.

Lo sqlite_schema Tabella

Ogni database SQLite contiene un singolo sqlite_schema tabella che memorizza lo schema per quel database. Lo schema per un database è una descrizione di tutte le altre tabelle, indici, trigger e viste contenute nel database.

Possiamo interrogare questa tabella per restituire solo le visualizzazioni:

SELECT name 
FROM sqlite_schema 
WHERE type = 'view';

Esempio di risultato:

name    
--------
v1      
vArtists
vAlbums 
vGenres

Nel mio caso, ho quattro viste nel database.

Il sqlite_master Tabella

Per la compatibilità storica, sqlite_schema la tabella può anche essere definita sqlite_master .

Quindi possiamo cambiare l'esempio precedente nel seguente:

SELECT name 
FROM sqlite_master 
WHERE type = 'view';

Esempio di risultato:

name    
--------
v1      
vArtists
vAlbums 
vGenres

Il .tables Comando

Possiamo anche usare .tables comando per restituire le viste.

Il .table il comando interroga sqlite_schema tabella per tutti i database allegati (non solo il database primario).

Questo comando restituisce sia tabelle che viste, quindi potrebbe non essere utile come i metodi precedenti. Tuttavia, se hai una convenzione di denominazione coerente per le tue viste, potrebbe essere un modo semplice e veloce per ottenere un elenco di viste nel database.

Esempio:

.tables

Esempio di risultato:

Albums      Customers   OrderItems  Products    v1          vArtists  
Artists     Genres      Orders      Vendors     vAlbums     vGenres  

Nel mio caso, tutte le visualizzazioni sono precedute da v , e in questo modo è più facile determinare quali sono viste e quali sono tabelle.

Possiamo anche restringere il campo in base al nome della tabella/vista aggiungendo un modello al .table comando. Questo può essere utile se hai una convenzione di denominazione chiara e distinta per le tue viste che le separa dalle tabelle.

Esempio:

.tables 'v%'

Risultato:

Vendors   v1        vAlbums   vArtists  vGenres

In questo caso, la mia convenzione di denominazione ha aiutato, ma non ha escluso tutte le tabelle (Vendors è un tavolo). In ogni caso, ha comunque ristretto i risultati e reso più facile visualizzare tutte le visualizzazioni con una rapida occhiata.

La table_list Dichiarazione pragmatica

Ecco un'aggiunta più recente a SQLite. La table_list L'istruzione pragma è stata introdotta in SQLite 3.37.0 (rilasciato il 27-11-2021). Questa dichiarazione pragma elenca tabelle e viste.

Esempio:

PRAGMA table_list;

Risultato:

schema     name                            type   ncol  wr  strict
---------  ------------------------------  -----  ----  --  ------
main       sqlite_schema                   table  5     0   0     
temp       sqlite_temp_schema              table  5     0   0     
Northwind  Sales by Category               view   4     0   0     
Northwind  Sales Totals by Amount          view   4     0   0     
Northwind  Products by Category            view   5     0   0     
Northwind  Summary of Sales by Quarter     view   3     0   0     
Northwind  Product Sales for 1997          view   3     0   0     
Northwind  Order Subtotals                 view   2     0   0     
Northwind  Invoices                        view   26    0   0     
Northwind  Quarterly Orders                view   4     0   0     
Northwind  Customer and Suppliers by City  view   4     0   0     
Northwind  Alphabetical list of products   view   11    0   0     
Northwind  Order Details Extended          view   7     0   0     
Northwind  Category Sales for 1997         view   2     0   0     
Northwind  Products Above Average Price    view   2     0   0     
Northwind  Orders Qry                      view   20    0   0     
Northwind  Suppliers                       table  12    0   0     
Northwind  Summary of Sales by Year        view   3     0   0     
Northwind  Regions                         table  2     0   0     
Northwind  Orders                          table  14    0   0     
Northwind  sqlite_schema                   table  5     0   0     
Northwind  Categories                      table  4     0   0     
Northwind  sqlite_sequence                 table  2     0   0     
Northwind  Products                        table  10    0   0     
Northwind  CustomerDemographics            table  2     0   0     
Northwind  CustomerCustomerDemo            table  2     0   0     
Northwind  Customers                       table  11    0   0     
Northwind  Employees                       table  18    0   0     
Northwind  Current Product List            view   2     0   0     
Northwind  Territories                     table  3     0   0     
Northwind  EmployeeTerritories             table  2     0   0     
Northwind  Shippers                        table  3     0   0     
Northwind  Order Details                   table  5     0   0   

Possiamo vedere quali sono le visualizzazioni guardando il type colonna.

Puoi restringerlo a uno schema specifico e puoi cercare per nome tabella/vista. Vedi PRAGMA table_list in SQLite per una panoramica ed esempi di questa opzione.