Parfois, vous voulez simplement voir la structure de base d'un tableau.
Dans SQLite, il existe plusieurs façons de récupérer des informations sur une table donnée. En particulier, voici quatre options :
- Le
PRAGMA table_info()
déclaration - Le
PRAGMA table_xinfo()
déclaration (pour les tables virtuelles) - Le
.schema
commande - Le
sqlite_master
tableau
Des exemples de chaque méthode sont présentés ci-dessous.
PRAGMA table_info()
Le PRAGMA table_info()
L'instruction renvoie une ligne pour chaque colonne de la table nommée. C'est un peu comme un équivalent SQLite du DESCRIBE
déclaration dans MySQL.
Syntaxe
La syntaxe ressemble à ceci :
PRAGMA schema.table_info(table-name);
Où table-name
est le nom de la table sur laquelle vous avez besoin d'informations.
Le schema
partie est facultative. Il s'agit du nom d'une base de données attachée ou main
ou temp
pour les bases de données principale et TEMP. Si vous ne le fournissez pas, la base de données principale sera utilisée.
Exemple
Voici un exemple de retour d'informations sur une table appelée Pets .
PRAGMA table_info(Pets);
Résultat :
cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 1 PetName 0 0 2 TypeId 0 0
Dans ce cas, seule la première colonne (PetId ) a son type de données explicitement défini. Les autres ont été créés sans que leurs types soient explicitement définis.
Nous pouvons également voir que le PetId colonne est la colonne de clé primaire (il y a un 1 dans le pk colonne).
PRAGMA table_xinfo()
Le PRAGMA table_xinfo()
est exactement la même que la PRAGMA table_info()
, sauf qu'elle renvoie également les colonnes masquées sur les tables virtuelles.
Si vous voulez voir la structure d'une table virtuelle, y compris les colonnes cachées, c'est celle-ci qu'il faut utiliser.
Voici un exemple utilisant le même tableau que l'exemple précédent.
PRAGMA table_xinfo(Pets);
Résultat :
cid name type notnull dflt_value pk hidden ---------- ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 0 1 PetName 0 0 0 2 TypeId 0 0 0
Vous devrez peut-être faire défiler latéralement pour voir la colonne supplémentaire. Dans ce cas, aucune des colonnes n'est masquée (et ce n'est pas une table virtuelle), donc toutes les lignes sont 0 pour cette colonne.
Voici à nouveau le résultat, mais en utilisant la sortie verticale (.mode line
) afin que vous n'ayez pas à faire défiler latéralement.
.mode line
PRAGMA table_xinfo(Pets);
Résultat :
cid = 0 name = PetId type = INTEGER notnull = 0 dflt_value = pk = 1 hidden = 0 cid = 1 name = PetName type = notnull = 0 dflt_value = pk = 0 hidden = 0 cid = 2 name = TypeId type = notnull = 0 dflt_value = pk = 0 hidden = 0
La commande .schema
Une autre façon de récupérer la structure d'une table est d'utiliser le .schema
commande. Il s'agit de l'une des nombreuses méthodes que vous pouvez utiliser pour renvoyer le SQL utilisé pour créer la table.
Voici un exemple utilisant le même tableau que l'exemple précédent.
.schema Pets
Résultat :
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) );
Cette méthode nous permet de voir plus d'informations sur la table. Dans cet exemple, nous pouvons voir que le TypeId colonne est en fait une clé étrangère qui référence une colonne dans une autre table.
Le tableau sqlite_master
Vous pouvez utiliser le sqlite_master
table à la même chose que l'exemple précédent.
Voici un exemple utilisant la même table.
SELECT sql
FROM sqlite_master
WHERE tbl_name = 'Pets';
Résultat :
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )