O comando ALTER TABLE é usado para alterar a estrutura de uma tabela PostgreSQL. É o comando usado para alterar as colunas da tabela ou o nome da tabela.
Neste tutorial, você aprenderá:
- Sintaxe
- Descrição
- Modificando uma coluna
- Adicionando uma nova coluna
- Renomeando uma coluna da tabela
- Definindo um valor padrão para uma coluna
- Adicionando uma restrição de verificação
- Renomeando uma Tabela
- Usando o pgAdmin
Sintaxe
Esta é a sintaxe do comando ALTER TABLE do PostgreSQL:
ALTER TABLE table-name action;
O parâmetro table-name é o nome da tabela que você precisa alterar.
O parâmetro de ação é a ação que você precisa realizar, como alterar o nome de uma coluna, alterar o tipo de dados de uma coluna, etc.
Descrição
O comando ALTER TABLE altera a definição de uma tabela existente. Leva os seguintes subformulários:
- ADD COLUMN : usa sintaxe semelhante ao comando CREATE TABLE para adicionar uma nova coluna a uma tabela.
- DROP COLUMN : para eliminar uma coluna da tabela. As restrições e índices impostos às colunas também serão eliminados.
- SET / DROP DEFAULT : Use para remover o valor padrão de uma coluna. No entanto, a alteração só se aplicará às instruções INSERT subsequentes.
- SET / DROP NOT NULL : Altera se uma coluna permite nulos ou não.
- SET STATISTICS: Para definir o destino de coleta de estatísticas para cada coluna para operações ANALYZE.
- SET STORAGE : Para definir o modo de armazenamento de uma coluna. Isso determinará onde a coluna é mantida, se embutida ou em uma tabela suplementar.
- SET WITHOUT OIDS : Use para remover a coluna antiga da tabela.
- RENAME : para alterar o nome da tabela ou o nome da coluna.
- ADD table_constraint : Use para adicionar uma nova restrição a uma tabela. Ele usa a mesma sintaxe do comando CREATE TABLE.
- DROP CONSTRAINT : Use para eliminar uma restrição de tabela.
- PROPRIETÁRIO : para alterar o dono de uma tabela, sequência, índice ou visão para um determinado usuário.
- CLUSTER : para marcar uma tabela a ser usada para realizar futuras operações de cluster.
Modificando uma coluna
Uma coluna pode ser modificada de várias maneiras. Essas modificações podem ser feitas usando o comando ALTER TABLE. Vamos discutir isso:
Adicionando uma nova coluna
Para adicionar uma nova coluna a uma tabela PostgreSQL, o comando ALTER TABLE é usado com a seguinte sintaxe:
ALTER TABLE table-nameADD new-column-name column-definition;
O nome da tabela é o nome da tabela a ser modificada.
O nome da nova coluna é o nome da nova coluna a ser adicionada.
A definição da coluna é o tipo de dados da nova coluna.
Veja a tabela de livros mostrada abaixo:
A tabela possui duas colunas, id e nome. Precisamos adicionar uma nova coluna à tabela e dar a ela o nome autor. Basta executar o seguinte comando:
ALTER TABLE BookADD author VARCHAR(50);
Depois de executar o comando acima, a tabela Book é agora a seguinte:
A nova coluna foi adicionada com sucesso.
Renomeando uma coluna da tabela
Podemos usar o comando ALTER TABLE para alterar o nome de uma coluna. Nesse caso, o comando é usado com a seguinte sintaxe:
ALTER TABLE table-nameRENAME COLUMN old-name TO new-name;
O nome da tabela é o nome da tabela cuja coluna deve ser renomeada.
O nome antigo é o nome antigo / atual da coluna.
O novo-nome é o novo nome da coluna. Considere o livro de tabelas mostrado abaixo:
Livro:
Precisamos do nome do autor da coluna para book_author. Aqui está o comando:
ALTER TABLE BookRENAME COLUMN author TO book_author;
Depois de executar o comando, podemos ver a estrutura da tabela:
O nome da coluna foi alterado com sucesso.
Definindo um valor padrão para uma coluna
Podemos definir um valor padrão para uma coluna de forma que, mesmo quando você não especificar um valor para essa coluna durante as operações INSERT, o valor padrão será usado. Nesse caso, o comando ALTER TABLE pode ser usado com a seguinte sintaxe:
ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];
O nome da tabela é o nome da tabela cuja coluna deve ser modificada.
O nome da coluna é o nome cujo valor padrão deve ser definido.
O valor é o valor padrão da coluna.
Considere a tabela de livros fornecida abaixo:
Precisamos definir um valor padrão para a coluna book_author. Podemos executar o seguinte comando:
ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';
Agora, vamos inserir uma linha na tabela:
INSERT INTO Book (id, name)VALUES (6, 'PostgreSQL for Beginners');
Observe que inserimos valores para apenas duas colunas, id e nome. No entanto, o valor padrão foi usado para a coluna book_author:
Adicionando uma restrição de verificação
Uma restrição de verificação ajuda a validar os registros que estão sendo inseridos em uma tabela. Podemos fazer isso combinando o comando ALTER TABLE com a instrução ADD CHECK. Sintaxe:
ALTER TABLE table-name ADD CHECK expression;
O nome da tabela é o nome da tabela a ser alterada.
A expressão é a restrição a ser imposta na coluna da tabela.
Vamos modificar a coluna book_author da tabela Book para que ela aceite apenas os valores Nicholas e Samuel:
ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'));
Agora, vamos tentar inserir um valor diferente de Nicholas ou Samuel na coluna book_author da tabela Book:
INSERT INTO BookVALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');
A declaração retornará o seguinte erro:
A operação de inserção falhou porque violamos a restrição de verificação.
Renomeando uma Tabela
Esta é a sintaxe do comando ALTER TABLE para renomear uma tabela:
ALTER TABLE table-nameRENAME TO new-table-name;
O nome da tabela é o nome atual da tabela.
O novo nome da tabela é o novo nome a ser atribuído à tabela.
Por exemplo, vamos mudar o nome da tabela Livro para Livros:
ALTER TABLE BookRENAME TO Books;
Usando o pgAdmin
Agora vamos ver como essas ações podem ser realizadas usando o pgAdmin.
Adicionando uma nova coluna
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
ALTER TABLE BookADD author VARCHAR(50);
Etapa 4) Clique no botão Executar.
Etapa 5) Para verificar se a coluna foi adicionada, faça o seguinte:
- Clique em Bancos de dados na navegação à esquerda.
- Expanda a demonstração.
- Expanda esquemas.
- Expanda o público.
- Expanda tabelas.
- Expanda o livro.
- Expanda colunas.
A coluna deveria ter sido adicionada, conforme mostrado abaixo:
Renomeando uma coluna da tabela
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
ALTER TABLE BookRENAME COLUMN author TO book_author;
Etapa 4) Clique no botão Executar.
Etapa 5) Para verificar se a mudança foi bem-sucedida, faça o seguinte:
- Clique em Bancos de dados na navegação à esquerda.
- Expanda a demonstração.
- Expanda esquemas.
- Expanda o público.
- Expanda tabelas.
- Expanda o livro.
- Expanda colunas.
As colunas agora devem ser as seguintes:
A coluna foi alterada com sucesso.
Definindo um valor padrão para uma coluna
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';
Etapa 4) Clique no botão Executar.
Etapa 5) Para testar, execute o seguinte comando no editor de consultas:
INSERT INTO Book (id, name)VALUES (6, 'PostgreSQL for Beginners')
Etapa 6) Agora, podemos consultar a tabela para verificar se o valor padrão foi inserido na coluna book_author:
Adicionando uma restrição de verificação
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))
Etapa 4) Clique no botão Executar.
Etapa 5) Para testar isso, faça o seguinte:
- Digite a seguinte consulta no editor de consultas:
INSERT INTO BookVALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');
- Clique no botão Executar.
Ele retornará o seguinte:
Renomeando uma Tabela
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em Bancos de dados.
- Clique em Demo.
Etapa 3) Digite a consulta no editor de consultas:
ALTER TABLE BookRENAME TO Books;
Etapa 4) Clique no botão Executar.
Etapa 5) Para verificar se a tabela foi renomeada, faça o seguinte:
- Clique em Bancos de dados na navegação à esquerda.
- Expanda a demonstração.
- Expanda esquemas.
- Expanda o público.
- Expanda tabelas.
A tabela foi renomeada com sucesso.
Resumo:
- A instrução ALTER TABLE é usada para modificar a estrutura da tabela.
- O comando ALTER TABLE assume várias formas, dependendo da tarefa que você precisa executar.
- A estrutura pode ser as colunas da tabela ou a própria tabela.
- Podemos usar essa instrução para alterar o nome de uma tabela.
- O comando ALTER TABLE pode ser usado para definir o valor padrão de uma coluna.
- A instrução pode ser usada para validar os valores inseridos em uma coluna da tabela.
Baixe o banco de dados usado neste tutorial