SQLite
 sql >> Base de données >  >> RDS >> SQLite

4 façons d'obtenir des informations sur la structure d'une table dans SQLite

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);

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)
)