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

Adicionar uma coluna a uma tabela existente no SQLite


No SQLite, você pode usar o ALTER TABLE instrução para adicionar uma coluna a uma tabela existente.

Esta é realmente uma das poucas coisas que você pode fazer com o ALTER TABLE instrução em SQLite. As únicas coisas que você pode fazer com ALTER TABLE instrução no SQLite é renomear uma tabela, renomear uma coluna e adicionar uma nova coluna a uma tabela existente.

Exemplo 1


Imagine que temos a seguinte tabela:
CREATE TABLE Cats( 
    CatId INTEGER PRIMARY KEY, 
    CatName
);

E agora queremos adicionar uma coluna chamada DOB . Poderíamos fazer isso usando o seguinte código:
ALTER TABLE Cats ADD COLUMN DOB;

É simples assim.

Restrições


Você também pode fornecer outras especificações para a definição, como restrições, etc., mas há algumas restrições.

Em particular:
  • A nova coluna não pode ter uma PRIMARY KEY ou UNIQUE restrição.
  • A nova coluna não pode ter um valor padrão de CURRENT_TIME , CURRENT_DATE , CURRENT_TIMESTAMP , ou uma expressão entre parênteses.
  • Se um NOT NULL restrição for especificada, a coluna deverá ter um valor padrão diferente de NULL .
  • Se as restrições de chave estrangeira estiverem habilitadas e uma coluna com REFERENCES é adicionada, a coluna deve ter um valor padrão de NULL .
  • Se a nova coluna for uma coluna gerada, ela não pode ser STORED coluna. Pode ser um VIRTUAL coluna.

Exemplo 2


Aqui está outro exemplo, desta vez adiciono mais algumas especificações à definição da nova coluna:
CREATE TABLE Dogs( 
    DogId INTEGER PRIMARY KEY, 
    DogName
);

E agora queremos adicionar uma coluna chamada DOB . Poderíamos fazer isso usando o seguinte código:
ALTER TABLE Dogs 
ADD COLUMN Score NOT NULL DEFAULT 0;

Verifique as alterações


Existem várias maneiras de verificar a estrutura de uma tabela no SQLite.

Uma maneira é usar o PRAGMA table_info() demonstração.
PRAGMA table_info(Dogs);

Resultado:
cid  name     type     notnull     dflt_value  pk
---  -------  -------  ----------  ----------  --
0    DogId    INTEGER  0                       1 
1    DogName           0                       0 
2    Score             1           0           0 

Podemos ver a nova coluna e podemos ver que ela tem um NOT NULL restrição e que seu valor padrão é 0 .