Translate

Mostrando postagens com marcador coluna. Mostrar todas as postagens
Mostrando postagens com marcador coluna. Mostrar todas as postagens

domingo, 20 de outubro de 2013

Excluir uma coluna em uma tabela no PostgreSql

Para excluir uma coluna em uma tabela no postgresql utilizamos a seguinte sintaxe:


ALTER TABLE nomedatabela DROP COLUMN  nomedacoluna;
Significado:
  • ALTER TABLE: comando do postgresql para alterar a tabela;
  • nomedatabela: nome da tabela que contém a coluna que será excluída;
  • DROP COLUMN: comando do postgresql que indica que uma coluna deverá ser excluída;
  • nomedacoluna: nome da coluna que será excluída;
Exemplo:
Na tabela "esporte" queremos excluir a coluna "disponibilidade". Podemos visualizar a tabela "esporte" na imagem abaixo:

Para excluirmos a coluna "disponibilidade" da tabela "esporte" executaremos o comando abaixo:

ALTER TABLE esporte DROP COLUMN  disponibilidade;

Veja a tabela abaixo após a execução do comando:

Criar uma coluna em uma tabela existente no PostgreSql

Para criar uma coluna em uma tabela existente no postgresql utilizamos a seguinte sintaxe:

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.
 
Veja o script dos exemplos no GitHub ou faça o download no Google Drive.

1º) Exemplo

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:




Para criarmos a coluna "disponibilidade" executaremos o comando abaixo:

ALTER TABLE esporte ADD COLUMN  disponibilidade  boolean;

Veja a tabela abaixo após a execução do comando:



Como podemos visualizar acima, a coluna já foi criada. Para atualizarmos a disponibilidade das modalidades esportivas utilizaremos os comandos abaixo:
 
/*atletismo está indisponivel*/
UPDATE esporte SET disponibilidade = false WHERE id = 1;

/*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;
Para criar as colunas, vamos executar o comando abaixo:

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);
 
Veja o erro abaixo:
 
ERROR: null value in column "categoria" violates not-null constraint DETAIL: Failing row contains (4, canoagem, f, null). SQL state: 23502
 

4º) Exemplo
 
Tornar a coluna "categoria" NÃO obrigatória (opcional).
 
Para remover a obrigatoriedade, execute o comando abaixo:
 
SINTAXE
 
ALTER TABLE nome_da_tabela ALTER COLUMN nome_da_coluna DROP NOT NULL;
 
Exemplo:
 
ALTER TABLE esporte ALTER COLUMN categoria  DROP NOT NULL;


 5º) Exemplo

Criar uma coluna chamada "modalidade_ativa" do tipo "boolean" com valor "DEFAULT" (padrão) igual a "true".
 
SINTAXE
 
ALTER TABLE nome_da_tabela ADD COLUMN nome_da_coluna  tipo_de_dado  DEFAULT valor_padrao;
 
Exemplo:
 
ALTER TABLE esporte ADD COLUMN modalidade_ativa boolean DEFAULT true;
 
 
6º) Exemplo
 
Criar uma coluna chamada "data_hora_criacao" do tipo "timestamp without time zone"  com valor "DEFAULT" igual a "data e hora atual".
 
SINTAXE
 
ALTER TABLE nome_da_tabela ADD COLUMN nome_da_coluna tipo_de_dado DEFAULT valor_padrao;
 
ALTER TABLE esporte ADD COLUMN data_hora_criacao timestamp without time zone
DEFAULT current_timestamp;

 
7º) Exemplo
 
 Remover o valor DEFAULT de uma coluna:
 
SINTAXE
 
ALTER TABLE nome_da_tabela ALTER COLUMN nome_da_coluna DROP DEFAULT;
 
Exemplos:
 
a) Remover o valor "DEFAULT" da coluna "modalidade_ativa".
 
ALTER TABLE esporte ALTER COLUMN modalidade_ativa DROP DEFAULT;
 
 
b) Remover o valor "DEFAULT" da coluna "data_hora_criacao".
 
ALTER TABLE esporte ALTER COLUMN data_hora_criacao DROP DEFAULT;