Voici quatre options pour afficher toutes les vues d'une base de données SQLite.
Le sqlite_schema
Tableau
Chaque base de données SQLite contient un seul sqlite_schema
table qui stocke le schéma de cette base de données. Le schéma d'une base de données est une description de toutes les autres tables, index, déclencheurs et vues contenus dans la base de données.
Nous pouvons interroger cette table pour renvoyer uniquement les vues :
SELECT name
FROM sqlite_schema
WHERE type = 'view';
Exemple de résultat :
name -------- v1 vArtists vAlbums vGenres
Dans mon cas, j'ai quatre vues dans la base de données.
Le sqlite_master
Tableau
Pour la compatibilité historique, le sqlite_schema
la table peut également être appelée sqlite_master
.
Nous pouvons donc remplacer l'exemple précédent par le suivant :
SELECT name
FROM sqlite_master
WHERE type = 'view';
Exemple de résultat :
name -------- v1 vArtists vAlbums vGenres
Les .tables
Commande
On peut aussi utiliser les .tables
commande pour retourner les vues.
Le .table
la commande interroge le sqlite_schema
table pour toutes les bases de données attachées (pas seulement la base de données primaire).
Cette commande renvoie à la fois des tables et des vues, elle peut donc ne pas être aussi utile que les méthodes précédentes. Cependant, si vous avez une convention de dénomination cohérente pour vos vues, cela pourrait être un moyen rapide et facile d'obtenir une liste de vues dans la base de données.
Exemple :
.tables
Exemple de résultat :
Albums Customers OrderItems Products v1 vArtists Artists Genres Orders Vendors vAlbums vGenres
Dans mon cas, toutes les vues sont préfixées par v
, ce qui permet de déterminer plus facilement lesquelles sont des vues et lesquelles sont des tables.
Nous pouvons également le réduire par nom de table/vue en ajoutant un modèle au .table
commande. Cela peut être pratique si vous avez une convention de dénomination claire et distincte pour vos vues qui les sépare des tables.
Exemple :
.tables 'v%'
Résultat :
Vendors v1 vAlbums vArtists vGenres
Dans ce cas, ma convention de nommage a aidé, mais elle n'a pas exclu toutes les tables (Vendors
est un tableau). Quoi qu'il en soit, cela restreignait les résultats et facilitait la visualisation de toutes les vues d'un simple coup d'œil.
La table_list
Déclaration pragmatique
Voici un ajout plus récent à SQLite. La table_list
L'instruction pragma a été introduite dans SQLite 3.37.0 (publié le 2021-11-27). Cette déclaration de pragma répertorie les tables et les vues.
Exemple :
PRAGMA table_list;
Résultat :
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
Nous pouvons voir lesquels sont des vues en regardant le type
colonne.
Vous pouvez le restreindre à un schéma spécifique et effectuer une recherche par nom de table/vue. Voir PRAGMA
table_list dans SQLite pour un aperçu et des exemples de cette option.