Soms wil je gewoon de basisstructuur van een tabel zien.
In SQLite zijn er verschillende manieren om informatie over een bepaalde tabel op te halen. Hier zijn in het bijzonder vier opties:
- De
PRAGMA table_info()
verklaring - De
PRAGMA table_xinfo()
statement (voor virtuele tabellen) - Het
.schema
commando - De
sqlite_master
tafel
Hieronder staan voorbeelden van elke methode.
PRAGMA table_info()
De PRAGMA table_info()
instructie retourneert één rij voor elke kolom in de genoemde tabel. Het is een soort SQLite-equivalent van de DESCRIBE
verklaring in MySQL.
Syntaxis
De syntaxis gaat als volgt:
PRAGMA schema.table_info(table-name);
Waar table-name
is de naam van de tafel waarover u informatie nodig heeft.
Het schema
deel is optioneel. Dit is de naam van een bijgevoegde database of main
of temp
voor de hoofd- en de TEMP-databases. Als u dit niet opgeeft, wordt de hoofddatabase gebruikt.
Voorbeeld
Hier is een voorbeeld van het retourneren van informatie over een tafel met de naam Huisdieren .
PRAGMA table_info(Pets);
Resultaat:
cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 1 PetName 0 0 2 TypeId 0 0
In dit geval wordt alleen de eerste kolom (PetId ) heeft zijn gegevenstype expliciet gedefinieerd. De andere zijn gemaakt zonder dat hun typen expliciet zijn gedefinieerd.
We kunnen ook zien dat de PetId kolom is de primaire sleutelkolom (er is een 1 in de pk kolom).
PRAGMA table_xinfo()
De PRAGMA table_xinfo()
statement is precies hetzelfde als de PRAGMA table_info()
statement, behalve dat het ook verborgen kolommen op virtuele tabellen retourneert.
Als u de structuur van een virtuele tabel wilt zien, inclusief verborgen kolommen, moet u deze gebruiken.
Hier is een voorbeeld met dezelfde tabel uit het vorige voorbeeld.
PRAGMA table_xinfo(Pets);
Resultaat:
cid name type notnull dflt_value pk hidden ---------- ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 0 1 PetName 0 0 0 2 TypeId 0 0 0
Mogelijk moet u zijwaarts scrollen om de extra kolom te zien. In dit geval zijn geen van de kolommen verborgen (en het is geen virtuele tabel), dus alle rijen zijn 0 voor die kolom.
Hier is het resultaat opnieuw, maar met behulp van verticale uitvoer (.mode line
) zodat u niet zijwaarts hoeft te scrollen.
.mode line
PRAGMA table_xinfo(Pets);
Resultaat:
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
Het .schema-commando
Een andere manier om de structuur van een tabel op te halen is door gebruik te maken van het .schema
opdracht. Dit is een van de verschillende methoden die u kunt gebruiken om de SQL te retourneren die is gebruikt om de tabel te maken.
Hier is een voorbeeld met dezelfde tabel uit het vorige voorbeeld.
.schema Pets
Resultaat:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) );
Met deze methode kunnen we meer informatie over de tabel bekijken. In dit voorbeeld kunnen we zien dat de TypeId kolom is eigenlijk een externe sleutel die verwijst naar een kolom in een andere tabel.
De sqlite_master-tabel
U kunt de sqlite_master
. gebruiken tabel naar hetzelfde als het vorige voorbeeld.
Hier is een voorbeeld waarin dezelfde tabel wordt gebruikt.
SELECT sql
FROM sqlite_master
WHERE tbl_name = 'Pets';
Resultaat:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )