sql >> Databasteknik >  >> RDS >> SQLite

4 sätt att lista vyerna i en SQLite-databas

Här är fyra alternativ för att visa alla vyer i en SQLite-databas.

sqlite_schema Tabell

Varje SQLite-databas innehåller en enda sqlite_schema tabell som lagrar schemat för den databasen. Schemat för en databas är en beskrivning av alla andra tabeller, index, utlösare och vyer som finns i databasen.

Vi kan fråga den här tabellen för att bara returnera vyerna:

SELECT name 
FROM sqlite_schema 
WHERE type = 'view';

Exempelresultat:

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

I mitt fall har jag fyra vyer i databasen.

sqlite_master Tabell

För historisk kompatibilitet, sqlite_schema Tabell kan också kallas sqlite_master .

Så vi kan ändra det föregående exemplet till följande:

SELECT name 
FROM sqlite_master 
WHERE type = 'view';

Exempelresultat:

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

.tables Kommando

Vi kan också använda .tables kommando för att returnera vyer.

.table kommandot frågar efter sqlite_schema tabell för alla bifogade databaser (inte bara den primära databasen).

Det här kommandot returnerar både tabeller och vyer, så det kanske inte är lika användbart som de tidigare metoderna. Men om du har en konsekvent namnkonvention för dina vyer kan det vara ett snabbt och enkelt sätt att få en lista över vyer i databasen.

Exempel:

.tables

Exempelresultat:

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

I mitt fall har alla vyer prefixet v , och det gör det lättare att avgöra vilka som är vyer och vilka som är tabeller.

Vi kan också begränsa det efter tabell-/vynamn genom att lägga till ett mönster till .table kommando. Detta kan vara praktiskt om du har en tydlig och distinkt namnkonvention för dina åsikter som skiljer dem från tabeller.

Exempel:

.tables 'v%'

Resultat:

Vendors   v1        vAlbums   vArtists  vGenres

I det här fallet hjälpte min namnkonvention, men den uteslöt inte alla tabeller (Vendors är ett bord). Hur som helst, det minskade fortfarande resultaten och gjorde det lättare att se alla vyer med en snabb blick.

table_list Pragmauttalande

Här är ett nyare tillägg till SQLite. table_list pragma-satsen introducerades i SQLite 3.37.0 (släpptes 2021-11-27). Detta pragmauttalande listar tabeller och vyer.

Exempel:

PRAGMA table_list;

Resultat:

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   

Vi kan se vilka som är vyer genom att titta på type kolumn.

Du kan begränsa det till ett specifikt schema och du kan söka efter tabell-/vynamn. Se PRAGMA table_list i SQLite för en översikt och exempel på detta alternativ.


  1. Java lagrad procedur vs PL/SQL lagrad procedur

  2. 3 sätt att få de sorteringar som är tillgängliga i MariaDB

  3. SQL Server PIVOT kanske?

  4. Ska jag använda en inline varchar(max) kolumn eller lagra den i en separat tabell?