SQLite
 sql >> Datenbank >  >> RDS >> SQLite

4 Möglichkeiten, Informationen über die Struktur einer Tabelle in SQLite zu erhalten

Manchmal möchten Sie nur die Grundstruktur einer Tabelle sehen.

In SQLite gibt es mehrere Möglichkeiten, Informationen über eine bestimmte Tabelle abzurufen. Hier sind insbesondere vier Optionen:

  • Der PRAGMA table_info() Erklärung
  • Der PRAGMA table_xinfo() -Anweisung (für virtuelle Tabellen)
  • Das .schema Befehl
  • Der sqlite_master Tabelle

Beispiele für jede Methode finden Sie unten.

PRAGMA table_info()

Die PRAGMA table_info() -Anweisung gibt eine Zeile für jede Spalte in der benannten Tabelle zurück. Es ist so etwas wie ein SQLite-Äquivalent zu DESCRIBE Anweisung in MySQL.

Syntax

Die Syntax lautet wie folgt:

PRAGMA schema.table_info(table-name);

Wobei table-name ist der Name der Tabelle, über die Sie Informationen benötigen.

Das schema Teil ist optional. Dies ist der Name einer angehängten Datenbank oder main oder temp für die Haupt- und die TEMP-Datenbank. Wenn Sie dies nicht angeben, wird die Hauptdatenbank verwendet.

Beispiel

Hier ist ein Beispiel für die Rückgabe von Informationen über eine Tabelle namens Haustiere .

PRAGMA table_info(Pets);

Ergebnis:

cid         name        type        notnull     dflt_value  pk        
----------  ----------  ----------  ----------  ----------  ----------
0           PetId       INTEGER     0                       1         
1           PetName                 0                       0         
2           TypeId                  0                       0         

In diesem Fall wird nur die erste Spalte (PetId ) hat seinen Datentyp explizit definiert. Die anderen wurden erstellt, ohne dass ihre Typen explizit definiert wurden.

Wir können auch sehen, dass die PetId Spalte ist die Primärschlüsselspalte (es gibt eine 1 im pk Spalte).

PRAGMA table_xinfo()

Die PRAGMA table_xinfo() -Anweisung ist genau dieselbe wie die PRAGMA table_info() -Anweisung, außer dass sie auch versteckte Spalten in virtuellen Tabellen zurückgibt.

Wenn Sie die Struktur einer virtuellen Tabelle einschließlich aller versteckten Spalten sehen möchten, verwenden Sie diese.

Hier ist ein Beispiel, das dieselbe Tabelle aus dem vorherigen Beispiel verwendet.

PRAGMA table_xinfo(Pets);

Ergebnis:

cid         name        type        notnull     dflt_value  pk          hidden    
----------  ----------  ----------  ----------  ----------  ----------  ----------
0           PetId       INTEGER     0                       1           0         
1           PetName                 0                       0           0         
2           TypeId                  0                       0           0         

Möglicherweise müssen Sie zur Seite scrollen, um die zusätzliche Spalte zu sehen. In diesem Fall ist keine der Spalten ausgeblendet (und es ist keine virtuelle Tabelle), also sind alle Zeilen 0 für diese Spalte.

Hier ist noch einmal das Ergebnis, aber mit vertikaler Ausgabe (.mode line ), damit Sie nicht seitwärts scrollen müssen.

.mode line
PRAGMA table_xinfo(Pets);

Ergebnis:

       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

Der .schema-Befehl

Eine andere Möglichkeit, die Struktur einer Tabelle abzurufen, ist die Verwendung von .schema Befehl. Dies ist eine von mehreren Methoden, die Sie verwenden können, um die SQL zurückzugeben, die zum Erstellen der Tabelle verwendet wurde.

Hier ist ein Beispiel, das dieselbe Tabelle aus dem vorherigen Beispiel verwendet.

.schema Pets

Ergebnis:

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);

Diese Methode ermöglicht es uns, mehr Informationen über die Tabelle anzuzeigen. In diesem Beispiel sehen wir, dass die TypeId Spalte ist eigentlich ein Fremdschlüssel, der auf eine Spalte in einer anderen Tabelle verweist.

Die sqlite_master-Tabelle

Sie können den sqlite_master verwenden Tabelle auf dasselbe wie im vorherigen Beispiel.

Hier ist ein Beispiel mit derselben Tabelle.

SELECT sql 
FROM sqlite_master 
WHERE tbl_name = 'Pets';

Ergebnis:

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
)