293 votes

Comment peut-on voir la structure d'une table dans SQLite?

Comment puis-je voir la structure de la table dans SQLite comme desc l'était dans Oracle ?

410voto

Saumitra Points 2089
PRAGMA table_info(table_name);

Ceci fonctionnera à la fois en ligne de commande et lors de l'exécution contre une base de données connectée.

Un lien pour plus de détails et d'exemples. Merci Commande Pragma SQLite

8 votes

Exécuter .header on avant d'exécuter la commande ci-dessus. vous pouvez afficher les colonnes avec les données.

2 votes

Ceci devrait être la réponse acceptée. Les classes .tables et .schema affichent seulement "les déclarations originales CREATE TABLE et CREATE INDEX". Toute modification ultérieure NE sera PAS reflétée.

2 votes

Si vous souhaitez obtenir les informations sur la table d'une base de données attachée appelée 'foo', vous exécutez PRAGMA foo.table_info(nom_de_la_table);

369voto

metamatt Points 3276

Appelez l'utilitaire sqlite3 sur le fichier de base de données, et utilisez ses commandes spéciales dot :

  • .tables listera les tables
  • .schema [nomtable] affichera la ou les déclarations CREATE pour une table ou des tables

Il existe de nombreuses autres commandes dot intégrées utiles - consultez la documentation à l'adresse http://www.sqlite.org/sqlite.html, section Commandes spéciales pour sqlite3.

Exemple :

sqlite> entropie:~/Bibliothèque/Mail>sqlite3 Envelope\ Index
Version SQLite 3.6.12
Entrez ".help" pour obtenir des instructions
Entrez des instructions SQL terminées par un ";"
sqlite> .tables
adresses              dossiers_ews           sujets
alarmes                 flux                     fils
associations           boîtes_mail              notes_todo
pièces_jointes            messages               todos
calendriers              propriétés              todos_log_supprimés
événements                destinataires           todo_snapshot_serveur
sqlite> .schema alarmes
CREATE TABLE alarmes (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, id_alarme,
                     todo INTEGER, flags INTEGER, offset_jours INTEGER,
                     date_rappel INTEGER, heure INTEGER, argument,
                     données_non_reconnues BLOB);
CREATE INDEX index_id_alarme ON alarmes(id_alarme);
CREATE INDEX index_todo_alarme ON alarmes(todo);

Notez également que SQLite enregistre le schéma et toutes les informations sur les tables dans la base de données elle-même, dans une table magique nommée sqlite_master, et il est également possible d'exécuter des requêtes SQL normales contre cette table. Par exemple, le lien de documentation ci-dessus montre comment déduire le comportement des commandes .schema et .tables, en utilisant des commandes SQL normales (voir la section : Interrogation du schéma de la base de données).

23 votes

Une erreur courante ici est de confondre ces fonctions utilitaires avec des instructions SQL.. le premier ne nécessite pas de ; à la fin de la commande, alors que le dernier en a besoin.

2 votes

Ne me montre pas l'index même si j'ai une clé primaire sur deux colonnes ensemble.

0 votes

Ne fonctionne pas pour moi mais la réponse de AnonGeek le fait

18voto

Costa Walcott Points 534

Vous devriez être en mesure de voir le schéma en exécutant

.schema

14voto

Abi Points 1994

.schema NomTable

Où NomTable est le nom de la table

11voto

aTJ Points 1251

Vous obtiendrez la structure en tapant la commande :

.schema

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X