Aqui estão quatro opções para mostrar todas as visualizações em um banco de dados SQLite.
O sqlite_schema
Tabela
Cada banco de dados SQLite contém um único
sqlite_schema
tabela que armazena o esquema para esse banco de dados. O esquema de um banco de dados é uma descrição de todas as outras tabelas, índices, gatilhos e exibições contidos no banco de dados. Podemos consultar esta tabela para retornar apenas as visualizações:
SELECT name
FROM sqlite_schema
WHERE type = 'view';
Exemplo de resultado:
name -------- v1 vArtists vAlbums vGenres
No meu caso, tenho quatro visualizações no banco de dados.
O sqlite_master
Tabela
Para compatibilidade histórica, o
sqlite_schema
tabela também pode ser chamada de sqlite_master
. Assim, podemos alterar o exemplo anterior para o seguinte:
SELECT name
FROM sqlite_master
WHERE type = 'view';
Exemplo de resultado:
name -------- v1 vArtists vAlbums vGenres
Os .tables
Comando
Também podemos usar o
.tables
comando para retornar visualizações. O
.table
comando consulta o sqlite_schema
tabela para todos os bancos de dados anexados (não apenas o banco de dados primário). Esse comando retorna tabelas e visualizações, portanto, pode não ser tão útil quanto os métodos anteriores. No entanto, se você tiver uma convenção de nomenclatura consistente para suas visualizações, pode ser uma maneira rápida e fácil de obter uma lista de visualizações no banco de dados.
Exemplo:
.tables
Exemplo de resultado:
Albums Customers OrderItems Products v1 vArtists Artists Genres Orders Vendors vAlbums vGenres
No meu caso, todas as visualizações são prefixadas com
v
, e assim fica mais fácil determinar quais são visualizações e quais são tabelas. Também podemos reduzi-lo pelo nome da tabela/exibição anexando um padrão ao
.table
comando. Isso pode ser útil se você tiver uma convenção de nomenclatura clara e distinta para suas exibições que as separe das tabelas. Exemplo:
.tables 'v%'
Resultado:
Vendors v1 vAlbums vArtists vGenres
Nesse caso, minha convenção de nomenclatura ajudou, mas não excluiu todas as tabelas (
Vendors
é uma mesa). De qualquer forma, ainda reduziu os resultados e tornou mais fácil ver todas as visualizações com uma rápida olhada. A table_list
Declaração de Pragma
Aqui está uma adição mais recente ao SQLite. A
table_list
pragma foi introduzida no SQLite 3.37.0 (lançado em 27/11/2021). Esta declaração pragma lista as tabelas e visualizações. Exemplo:
PRAGMA table_list;
Resultado:
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
Podemos ver quais são visualizações olhando para o
type
coluna. Você pode reduzi-lo a um esquema específico e pesquisar por nome de tabela/exibição. Consulte
PRAGMA
table_list no SQLite para obter uma visão geral e exemplos dessa opção.