sql >> Database teknologi >  >> RDS >> SQLite

4 måder at få information om en tabels struktur i SQLite

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æring
  • PRAGMA table_xinfo() sætning (for virtuelle tabeller)
  • .schema kommando
  • sqlite_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)
)

  1. Indfyldning af displayvareværdi på forespørgsel i Oracle-formularer

  2. Bestemmelse af, om feltdataene i Oracle er af nummertypen

  3. PostgreSQL:Opret tabel, hvis den ikke eksisterer AS

  4. Ret fejl "ORA-01789:forespørgselsblokken har forkert antal resultatkolonner"