SQLite
 sql >> Database >  >> RDS >> SQLite

4 modi per ottenere informazioni sulla struttura di una tabella in SQLite

A volte vuoi solo vedere la struttura di base di una tabella.

In SQLite, ci sono diversi modi per recuperare informazioni su una determinata tabella. In particolare, ecco quattro opzioni:

  • Il PRAGMA table_info() dichiarazione
  • Il PRAGMA table_xinfo() istruzione (per tabelle virtuali)
  • Il .schema comando
  • Il sqlite_master tabella

Di seguito sono riportati esempi di ciascun metodo.

PRAGMA table_info()

Il PRAGMA table_info() istruzione restituisce una riga per ogni colonna nella tabella denominata. È un po' come un SQLite equivalente a DESCRIBE istruzione in MySQL.

Sintassi

La sintassi è questa:

PRAGMA schema.table_info(table-name);

Dove table-name è il nome della tabella su cui hai bisogno di informazioni.

Lo schema parte è facoltativa. Questo è il nome di un database allegato o main o temp per i database principale e TEMP. Se non lo fornisci, verrà utilizzato il database principale.

Esempio

Ecco un esempio di restituzione di informazioni su una tabella chiamata Animali domestici .

PRAGMA table_info(Pets);

Risultato:

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

In questo caso, solo la prima colonna (PetId ) ha il tipo di dati esplicitamente definito. Gli altri sono stati creati senza che i loro tipi fossero definiti in modo esplicito.

Possiamo anche vedere che il PetId colonna è la colonna della chiave primaria (c'è un 1 nel pk colonna).

Tabella PRAGMA_xinfo()

La PRAGMA table_xinfo() è esattamente la stessa di PRAGMA table_info() istruzione, tranne per il fatto che restituisce anche colonne nascoste su tabelle virtuali.

Se vuoi vedere la struttura di una tabella virtuale, comprese le eventuali colonne nascoste, questa è quella da usare.

Ecco un esempio che utilizza la stessa tabella dell'esempio precedente.

PRAGMA table_xinfo(Pets);

Risultato:

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

Potrebbe essere necessario scorrere lateralmente per vedere la colonna in più. In questo caso nessuna delle colonne è nascosta (e non è una tabella virtuale), quindi tutte le righe sono 0 per quella colonna.

Ecco di nuovo il risultato, ma usando l'output verticale (.mode line ) in modo da non dover scorrere lateralmente.

.mode line
PRAGMA table_xinfo(Pets);

Risultato:

       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

Il comando .schema

Un altro modo per recuperare la struttura di una tabella è utilizzare .schema comando. Questo è uno dei tanti metodi che puoi usare per restituire l'SQL usato per creare la tabella.

Ecco un esempio che utilizza la stessa tabella dell'esempio precedente.

.schema Pets

Risultato:

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

Questo metodo ci consente di vedere più informazioni sulla tabella. In questo esempio, possiamo vedere che TypeId colonna è in realtà una chiave esterna che fa riferimento a una colonna in un'altra tabella.

Il tavolo sqlite_master

Puoi usare sqlite_master tabella alla stessa cosa dell'esempio precedente.

Ecco un esempio che utilizza la stessa tabella.

SELECT sql 
FROM sqlite_master 
WHERE tbl_name = 'Pets';

Risultato:

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