ALTER TABLE nome_da_tabela ADD COLUMN nome_da_coluna tipo_de_dado;
Significado:
- ALTER TABLE: comando do postgresql para alterar a tabela;
- nome_da_tabela: nome da tabela na qual será criada a coluna;
- ADD COLUMN: comando do postgresql que indica que uma coluna deverá ser adicionada;
- nome_da_coluna: nome da coluna que será criada;
- tipo_de_dado: tipo de dado da coluna. Exemplo: integer, smallint, character varying, boolean, etc.
Segue abaixo 7 exemplos referentes a criação de uma nova coluna:
- O 1º exemplo mostra como criar uma nova coluna;
- O 2º exemplo mostra como criar mais de uma coluna em um mesmo comando;
- O 3º exemplo mostra como criar uma coluna com dados obrigatórios, ou seja não nula (not null). Este exemplo é dividido em 2 itens:
- No item "a" não existe dados na tabela;
- No item "b" já existe dados na tabela;
- O 4º exemplo mostra como remover a obrigatoriedade de uma coluna (DROP not null);
- O 5º e o 6º exemplos mostram como criar uma coluna com valor "DEFAULT", ou seja, um valor padrão, caso o valor incluído seja um dado nulo (null), o valor nulo será substituído pelo valor padrão;
- O 7º exemplo mostra como remover o valor DEFAULT de uma coluna.
Na tabela "esporte" vamos criar a coluna "disponibilidade" para indicar se a modalidade esportiva está disponível em um centro de treinamento.
Podemos visualizar a tabela "esporte" na imagem abaixo:
Podemos visualizar a tabela "esporte" na imagem abaixo:
ALTER TABLE esporte ADD COLUMN disponibilidade boolean;
Veja a tabela abaixo após a execução do comando:
/*atletismo está indisponivel*/
UPDATE esporte SET disponibilidade = false WHERE id = 1;
/*futebol e natação estão disponíveis*/
/*futebol e natação estão disponíveis*/
UPDATE esporte SET disponibilidade = true WHERE id IN (2,3);
Podemos ver o resultado da atualização na tabela abaixo.
2º) Exemplo
Também é possível criar mais de uma coluna em um único comando.
Vamos criar duas colunas:
- dt_ev_inicio: data de inicio do evento;
- dt_ev_fim: data de fim do evento;
ALTER TABLE esporte
ADD COLUMN dt_ev_inicio date,
ADD COLUMN dt_ev_fim date;
Veja a tabela após a execução do comando:
Para atualizarmos as datas, utilizaremos os comandos abaixo:
UPDATE esporte SET
dt_ev_inicio = TO_DATE('02/09/2017', 'dd/mm/yyyy'),
dt_ev_fim = TO_DATE('25/10/2017', 'dd/mm/yyyy')
WHERE id = 1;
UPDATE
esporte
SET
dt_ev_inicio = TO_DATE('02/08/2017', 'dd/mm/yyyy'),
dt_ev_fim = TO_DATE('28/08/2017', 'dd/mm/yyyy')
WHERE id = 2;
UPDATE esporte SET
dt_ev_inicio = TO_DATE('10/08/2017', 'dd/mm/yyyy'),
dt_ev_fim = TO_DATE('26/08/2017', 'dd/mm/yyyy')
WHERE id = 3;
Visualize a tabela após a execução do comando:
3º) Exemplo
Criar na tabela "esporte" uma coluna obrigatória chamada "categoria", ou seja, que exige que o dado seja obrigatório (não nulo).
Antes
de criar a coluna devemos verificar se há dados na tabela, para isso
vamos utilizar a função "COUNT", esta função conta o número de linhas
de uma tabela.
Segue abaixo, o seguinte comando:
SELECT COUNT(*) FROM esporte;
a) Caso não haja dados na tabela
Vamos executar o comando para criar a coluna
SINTAXE
ALTER TABLE nome_da_tabela ADD COLUMN nome_da_coluna tipo_de_dado NOT NULL;
Perceba que acrescentamos "NOT NULL" para que o campo se torne obrigatório. Veja o exemplo abaixo:
ALTER TABLE esporte ADD COLUMN categoria varchar(80) NOT NULL;
b) Caso haja dados na tabela.
Primeiramente crie a coluna como não obrigatória. Vamos executar o comando para criar a coluna.
ALTER TABLE esporte ADD COLUMN categoria varchar(80);
Atualize os dados da coluna antes de torná-la obrigatória (não nula).
Segue a atualização de dados através do comando UPDATE.
/*foi atribuído a futebol categoria "coletivo"*/
UPDATE esporte SET categoria = 'coletivo' WHERE id = 2;
/*foi atribuído a atletismo e natação a categoria "individual"*/
UPDATE esporte SET categoria = 'individual' WHERE id IN (1,3);
Após a atualização, veja como ficou a tabela:
Agora que não há dados nulos, vamos tornar a coluna obrigatória.
SINTAXE
ALTER TABLE nome_da_tabela ALTER COLUMN nome_da_coluna SET NOT NULL;
Perceba que utilizamos "ALTER COLUMN" para alterar "as propriedades" de uma coluna existente, neste caso, torná-la "NÃO NULA".
Após o "ALTER COLUMN" colocaremos o nome da coluna.
Após o nome da coluna a setaremos como NÃO NULA, utilizando SET NOT NULL.
Veja o exemplo abaixo:
ALTER TABLE esporte ALTER COLUMN categoria SET NOT NULL;
Perceba que após inserir um novo registro, ou seja, executar o comando "INSERT" com uma categoria nula, será retornado um erro.
Veja o exemplo:
INSERT INTO
esporte (esport_desc, disponibilidade, categoria)
VALUES
('canoagem', false, NULL);
esporte (esport_desc, disponibilidade, categoria)
VALUES
('canoagem', false, NULL);
Veja o erro abaixo: