Czasami chcesz po prostu zobaczyć podstawową strukturę tabeli.
W SQLite istnieje kilka sposobów na pobranie informacji o danej tabeli. W szczególności są tu cztery opcje:
PRAGMA table_info()
oświadczeniePRAGMA table_xinfo()
oświadczenie (dla wirtualnych tabel).schema
poleceniesqlite_master
stół
Przykłady każdej metody znajdują się poniżej.
PRAGMA table_info()
PRAGMA table_info()
instrukcja zwraca jeden wiersz dla każdej kolumny w nazwanej tabeli. To trochę jak SQLite odpowiednik DESCRIBE
instrukcja w MySQL.
Składnia
Składnia wygląda tak:
PRAGMA schema.table_info(table-name);
Gdzie table-name
to nazwa tabeli, o której potrzebujesz informacji.
schema
część jest opcjonalna. To jest nazwa dołączonej bazy danych lub main
lub temp
dla bazy głównej i bazy danych TEMP. Jeśli tego nie podasz, zostanie użyta główna baza danych.
Przykład
Oto przykład zwracania informacji o tabeli o nazwie Zwierzęta .
PRAGMA table_info(Pets);
Wynik:
cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 1 PetName 0 0 2 TypeId 0 0
W tym przypadku tylko pierwsza kolumna (PetId ) ma wyraźnie zdefiniowany typ danych. Pozostałe zostały utworzone bez wyraźnego zdefiniowania ich typów.
Widzimy również, że PetId kolumna to kolumna klucza podstawowego (jest 1 w pk kolumna).
PRAGMA table_xinfo()
PRAGMA table_xinfo()
instrukcja jest dokładnie taka sama jak PRAGMA table_info()
z wyjątkiem tego, że zwraca również ukryte kolumny w wirtualnych tabelach.
Jeśli chcesz zobaczyć strukturę wirtualnej tabeli, w tym wszelkie ukryte kolumny, użyj tej opcji.
Oto przykład wykorzystujący tę samą tabelę z poprzedniego przykładu.
PRAGMA table_xinfo(Pets);
Wynik:
cid name type notnull dflt_value pk hidden ---------- ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 0 1 PetName 0 0 0 2 TypeId 0 0 0
Być może będziesz musiał przewinąć w bok, aby zobaczyć dodatkową kolumnę. W tym przypadku żadna z kolumn nie jest ukryta (i nie jest to wirtualna tabela), więc wszystkie wiersze są 0 dla tej kolumny.
Oto wynik ponownie, ale przy użyciu danych wyjściowych w pionie (.mode line
), aby nie trzeba było przewijać na boki.
.mode line
PRAGMA table_xinfo(Pets);
Wynik:
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
Polecenie .schema
Innym sposobem na pobranie struktury tabeli jest użycie .schema
Komenda. Jest to jedna z kilku metod, których możesz użyć do zwrócenia kodu SQL użytego do utworzenia tabeli.
Oto przykład wykorzystujący tę samą tabelę z poprzedniego przykładu.
.schema Pets
Wynik:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) );
Ta metoda pozwala nam zobaczyć więcej informacji o tabeli. W tym przykładzie widzimy, że TypeId kolumna jest w rzeczywistości kluczem obcym, który odwołuje się do kolumny w innej tabeli.
Tabela sqlite_master
Możesz użyć sqlite_master
tabeli do tego samego, co w poprzednim przykładzie.
Oto przykład przy użyciu tej samej tabeli.
SELECT sql
FROM sqlite_master
WHERE tbl_name = 'Pets';
Wynik:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )