Nogle gange vil du bare se den grundlæggende struktur i en tabel.
I SQLite er der flere måder at hente information om en given tabel på. Her er især fire muligheder:
PRAGMA table_info()
erklæringPRAGMA table_xinfo()
sætning (for virtuelle tabeller).schema
kommandosqlite_master
tabel
Eksempler på hver metode er nedenfor.
PRAGMA table_info()
PRAGMA table_info()
sætning returnerer en række for hver kolonne i den navngivne tabel. Det er lidt ligesom en SQLite, der svarer til DESCRIBE
erklæring i MySQL.
Syntaks
Syntaksen ser sådan ud:
PRAGMA schema.table_info(table-name);
Hvor table-name
er navnet på den tabel, du har brug for information om.
schema
del er valgfri. Dette er navnet på en vedhæftet database eller main
eller temp
for hoved- og TEMP-databaserne. Hvis du ikke angiver dette, vil hoveddatabasen blive brugt.
Eksempel
Her er et eksempel på returnering af oplysninger om en tabel kaldet Kæledyr .
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 dette tilfælde kun den første kolonne (PetId ) har sin datatype eksplicit defineret. De andre blev oprettet uden at deres typer var eksplicit defineret.
Vi kan også se, at PetId kolonne er den primære nøglekolonne (der er en 1). i pk kolonne).
PRAGMA table_xinfo()
PRAGMA table_xinfo()
sætningen er nøjagtig den samme som PRAGMA table_info()
sætning, bortset fra at den også returnerer skjulte kolonner på virtuelle tabeller.
Hvis du vil se strukturen af en virtuel tabel, inklusive eventuelle skjulte kolonner, er dette den, du skal bruge.
Her er et eksempel, der bruger den samme tabel fra det forrige eksempel.
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 skal muligvis rulle sidelæns for at se den ekstra kolonne. I dette tilfælde er ingen af kolonnerne skjult (og det er ikke en virtuel tabel), så alle rækker er 0 for den kolonne.
Her er resultatet igen, men ved at bruge lodret output (.mode line
), så du ikke behøver at scrolle sidelæns.
.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-kommandoen
En anden måde at hente en tabels struktur på er ved at bruge .schema
kommando. Dette er en af flere metoder, du kan bruge til at returnere den SQL, der blev brugt til at oprette tabellen.
Her er et eksempel, der bruger den samme tabel fra det forrige eksempel.
.schema Pets
Resultat:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) );
Denne metode giver os mulighed for at se mere information om tabellen. I dette eksempel kan vi se, at TypeId kolonne er faktisk en fremmednøgle, der refererer til en kolonne i en anden tabel.
sqlite_master-tabellen
Du kan bruge sqlite_master
tabel til det samme som det foregående eksempel.
Her er et eksempel, der bruger den samme tabel.
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) )