SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

4 maneiras de obter informações sobre a estrutura de uma tabela no SQLite


Às vezes você só quer ver a estrutura básica de uma tabela.

No SQLite, existem várias maneiras de recuperar informações sobre uma determinada tabela. Em particular, aqui estão quatro opções:
  • O PRAGMA table_info() declaração
  • A PRAGMA table_xinfo() instrução (para tabelas virtuais)
  • O .schema comando
  • O sqlite_master tabela

Exemplos de cada método estão abaixo.

PRAGMA table_info()


O PRAGMA table_info() A instrução retorna uma linha para cada coluna na tabela nomeada. É como um equivalente SQLite ao DESCRIBE declaração no MySQL.

Sintaxe


A sintaxe fica assim:
PRAGMA schema.table_info(table-name);

Onde table-name é o nome da tabela sobre a qual você precisa de informações.

O schema parte é opcional. Este é o nome de um banco de dados anexado ou main ou temp para os bancos de dados principal e TEMP. Se você não fornecer isso, o banco de dados principal será usado.

Exemplo


Aqui está um exemplo de retorno de informações sobre uma tabela chamada Animais de estimação .
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         

Nesse caso, apenas a primeira coluna (PetId ) tem seu tipo de dados explicitamente definido. Os demais foram criados sem que seus tipos fossem explicitamente definidos.

Também podemos ver que o PetId coluna é a coluna de chave primária (há um 1 no pk coluna).

PRAGMA table_xinfo()


O PRAGMA table_xinfo() instrução é exatamente a mesma que a PRAGMA table_info() instrução, exceto que também retorna colunas ocultas em tabelas virtuais.

Se você quiser ver a estrutura de uma tabela virtual, incluindo quaisquer colunas ocultas, esta é a única a ser usada.

Aqui está um exemplo usando a mesma tabela do exemplo 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         

Você pode ter que rolar para o lado para ver a coluna extra. Nesse caso, nenhuma das colunas está oculta (e não é uma tabela virtual), portanto, todas as linhas são 0 para essa coluna.

Aqui está o resultado novamente, mas usando saída vertical (.mode line ) para que você não precise rolar para os 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

O comando .schema


Outra maneira de recuperar a estrutura de uma tabela é usando o .schema comando. Este é um dos vários métodos que você pode usar para retornar o SQL usado para criar a tabela.

Aqui está um exemplo usando a mesma tabela do exemplo 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 mais informações sobre a tabela. Neste exemplo, podemos ver que o TypeId column é na verdade uma chave estrangeira que faz referência a uma coluna em outra tabela.

A tabela sqlite_master


Você pode usar o sqlite_master table para a mesma coisa que o exemplo anterior.

Aqui está um exemplo usando a mesma tabela.
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)
)