Ibland vill man bara se den grundläggande strukturen i en tabell.
I SQLite finns det flera sätt att hämta information om en given tabell. Här är särskilt fyra alternativ:
PRAGMA table_info()
uttalandePRAGMA table_xinfo()
uttalande (för virtuella tabeller).schema
kommandosqlite_master
tabell
Exempel på varje metod finns nedan.
PRAGMA table_info()
PRAGMA table_info()
sats returnerar en rad för varje kolumn i den namngivna tabellen. Det är ungefär som en SQLite som motsvarar DESCRIBE
uttalande i MySQL.
Syntax
Syntaxen ser ut så här:
PRAGMA schema.table_info(table-name);
Där table-name
är namnet på tabellen du behöver information om.
schema
del är valfri. Detta är namnet på en bifogad databas eller main
eller temp
för huvud- och TEMP-databaserna. Om du inte anger detta kommer huvuddatabasen att användas.
Exempel
Här är ett exempel på att returnera information om en tabell som heter Husdjur .
PRAGMA table_info(Pets);
Resultat:
cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 1 PetName 0 0 2 TypeId 0 0
I det här fallet, endast den första kolumnen (PetId ) har sin datatyp uttryckligen definierad. De andra skapades utan att deras typer var explicit definierade.
Vi kan också se att PetId kolumnen är den primära nyckelkolumnen (det finns en 1 i pk kolumn).
PRAGMA table_xinfo()
PRAGMA table_xinfo()
satsen är exakt samma som PRAGMA table_info()
sats, förutom att den också returnerar dolda kolumner på virtuella tabeller.
Om du vill se strukturen för en virtuell tabell, inklusive eventuella dolda kolumner, är det den här du ska använda.
Här är ett exempel med samma tabell från föregående exempel.
PRAGMA table_xinfo(Pets);
Resultat:
cid name type notnull dflt_value pk hidden ---------- ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 0 1 PetName 0 0 0 2 TypeId 0 0 0
Du kanske måste rulla i sidled för att se den extra kolumnen. I det här fallet är ingen av kolumnerna dold (och det är inte en virtuell tabell), så alla rader är 0 för den kolumnen.
Här är resultatet igen, men med vertikal utdata (.mode line
) så att du inte behöver rulla i sidled.
.mode line
PRAGMA table_xinfo(Pets);
Resultat:
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
.schema-kommandot
Ett annat sätt att hämta en tabells struktur är att använda .schema
kommando. Detta är en av flera metoder du kan använda för att returnera den SQL som användes för att skapa tabellen.
Här är ett exempel med samma tabell från föregående exempel.
.schema Pets
Resultat:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) );
Denna metod låter oss se mer information om tabellen. I det här exemplet kan vi se att TypeId kolumn är faktiskt en främmande nyckel som refererar till en kolumn i en annan tabell.
Sqlite_master-tabellen
Du kan använda sqlite_master
tabell till samma sak som föregående exempel.
Här är ett exempel med samma tabell.
SELECT sql
FROM sqlite_master
WHERE tbl_name = 'Pets';
Resultat:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )