Понякога просто искате да видите основната структура на таблица.
В SQLite има няколко начина за извличане на информация за дадена таблица. По-конкретно, ето четири опции:
PRAGMA table_info()
изявлениеPRAGMA table_xinfo()
изявление (за виртуални таблици).schema
командаsqlite_master
таблица
Примери за всеки метод са по-долу.
PRAGMA table_info()
PRAGMA table_info()
оператор връща един ред за всяка колона в наименуваната таблица. Това е нещо като SQLite, еквивалент на DESCRIBE
изявление в MySQL.
Синтаксис
Синтаксисът е така:
PRAGMA schema.table_info(table-name);
Където table-name
е името на таблицата, за която се нуждаете от информация.
schema
частта е по избор. Това е името на прикачена база данни или main
или temp
за основната и ТЕЛК бази данни. Ако не предоставите това, ще се използва основната база данни.
Пример
Ето пример за връщане на информация за таблица, наречена Домашни любимци .
PRAGMA table_info(Pets);
Резултат:
cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 1 PetName 0 0 2 TypeId 0 0
В този случай само първата колона (PetId ) има изрично дефиниран тип данни. Останалите са създадени без техните типове да са изрично дефинирани.
Можем също да видим, че PetId колоната е колоната с първичен ключ (има 1 в пка колона).
PRAGMA table_xinfo()
PRAGMA table_xinfo()
операторът е точно същият като PRAGMA table_info()
оператор, освен че връща и скрити колони във виртуални таблици.
Ако искате да видите структурата на виртуална таблица, включително всички скрити колони, тази е тази, която трябва да използвате.
Ето пример, използващ същата таблица от предишния пример.
PRAGMA table_xinfo(Pets);
Резултат:
cid name type notnull dflt_value pk hidden ---------- ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 0 1 PetName 0 0 0 2 TypeId 0 0 0
Може да се наложи да превъртите настрани, за да видите допълнителната колона. В този случай нито една от колоните не е скрита (и това не е виртуална таблица), така че всички редове са 0 за тази колона.
Ето отново резултата, но с помощта на вертикален изход (.mode line
), за да не се налага да превъртате настрани.
.mode line
PRAGMA table_xinfo(Pets);
Резултат:
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
Друг начин за извличане на структурата на таблица е с помощта на .schema
команда. Това е един от няколкото метода, които можете да използвате, за да върнете SQL, използван за създаване на таблицата.
Ето пример, използващ същата таблица от предишния пример.
.schema Pets
Резултат:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) );
Този метод ни позволява да видим повече информация за таблицата. В този пример можем да видим, че TypeId колоната всъщност е външен ключ, който препраща към колона в друга таблица.
Таблицата sqlite_master
Можете да използвате sqlite_master
таблица към същото нещо като предишния пример.
Ето пример за използване на същата таблица.
SELECT sql
FROM sqlite_master
WHERE tbl_name = 'Pets';
Резултат:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )