sql >> Database >  >> RDS >> SQLite

4 manieren om informatie te krijgen over de structuur van een tabel in SQLite

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)
)

  1. Android SQLite-database en app-update

  2. Oracle Dynamic Pivoting

  3. Best practices in het schalen van databases:deel 1

  4. 5 snelle handige tips voor SQL Server Production DBA's