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