sql >> Base de Datos >  >> RDS >> SQLite

4 formas de obtener información sobre la estructura de una tabla en SQLite

A veces, solo desea ver la estructura básica de una tabla.

En SQLite, hay varias formas de recuperar información sobre una tabla determinada. En particular, aquí hay cuatro opciones:

  • El PRAGMA table_info() declaración
  • La PRAGMA table_xinfo() declaración (para tablas virtuales)
  • El .schema comando
  • El sqlite_master mesa

A continuación se muestran ejemplos de cada método.

PRAGMA table_info()

PRAGMA table_info() declaración devuelve una fila para cada columna en la tabla nombrada. Es como un SQLite equivalente a DESCRIBE declaración en MySQL.

Sintaxis

La sintaxis es así:

PRAGMA schema.table_info(table-name);

Donde table-name es el nombre de la tabla sobre la que necesita información.

El schema parte es opcional. Este es el nombre de una base de datos adjunta o main o temp para las bases de datos principal y TEMP. Si no proporciona esto, se utilizará la base de datos principal.

Ejemplo

Este es un ejemplo de devolución de información sobre una tabla llamada Mascotas .

PRAGMA table_info(Pets);

Resultado:

cid         name        type        notnull     dflt_value  pk        
----------  ----------  ----------  ----------  ----------  ----------
0           PetId       INTEGER     0                       1         
1           PetName                 0                       0         
2           TypeId                  0                       0         

En este caso, solo la primera columna (PetId ) tiene su tipo de datos explícitamente definido. Los demás se crearon sin que sus tipos se definieran explícitamente.

También podemos ver que el PetId columna es la columna de clave principal (hay un 1 en el paquete columna).

PRAGMA tabla_xinfo()

PRAGMA table_xinfo() declaración es exactamente la misma que PRAGMA table_info() instrucción, excepto que también devuelve columnas ocultas en tablas virtuales.

Si desea ver la estructura de una tabla virtual, incluidas las columnas ocultas, esta es la que debe usar.

Aquí hay un ejemplo usando la misma tabla del ejemplo anterior.

PRAGMA table_xinfo(Pets);

Resultado:

cid         name        type        notnull     dflt_value  pk          hidden    
----------  ----------  ----------  ----------  ----------  ----------  ----------
0           PetId       INTEGER     0                       1           0         
1           PetName                 0                       0           0         
2           TypeId                  0                       0           0         

Es posible que deba desplazarse hacia los lados para ver la columna adicional. En este caso, ninguna de las columnas está oculta (y no es una tabla virtual), por lo que todas las filas son 0 para esa columna.

Aquí está el resultado nuevamente, pero usando salida vertical (.mode line ) para que no tenga que desplazarse hacia los lados.

.mode line
PRAGMA table_xinfo(Pets);

Resultado:

       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

El comando .schema

Otra forma de recuperar la estructura de una tabla es usando .schema dominio. Este es uno de varios métodos que puede utilizar para devolver el SQL utilizado para crear la tabla.

Aquí hay un ejemplo usando la misma tabla del ejemplo anterior.

.schema Pets

Resultado:

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
);

Este método nos permite ver más información sobre la tabla. En este ejemplo, podemos ver que el TypeId columna es en realidad una clave externa que hace referencia a una columna en otra tabla.

La tabla sqlite_master

Puedes usar el sqlite_master table a lo mismo que el ejemplo anterior.

Aquí hay un ejemplo usando la misma tabla.

SELECT sql 
FROM sqlite_master 
WHERE tbl_name = 'Pets';

Resultado:

CREATE TABLE Pets( 
    PetId INTEGER PRIMARY KEY, 
    PetName,
    TypeId,
    FOREIGN KEY(TypeId) REFERENCES Types(TypeId)
)