ORACLE
ALTERAR TABELAS
A declaração ALTER TABLE no Oracle permite que seja possível alterar uma tabela de várias maneiras, porém nesse material, a modificação tratará apenas de adicionar uma coluna, modificar uma coluna, remover uma coluna, renomear uma tabela.
Para os exemplos a seguir, será criada uma tabela chamada CLIENTE com as colunas codigoCliente sendo um número que identifica o cliente e nomeCliente para armazenar o nome:
CREATE TABLE CLIENTE ( codigoCliente NUMBER(13) NOT NULL, nomeCliente VARCHAR2(30) NOT NULL, sobrenomeCliente NUMBER(10) NOT NULL, CONSTRAINT PK_CLIENTE PRIMARY KEY (codigoCliente) );
Para isso, será utilizado o recurso "Comandos SQL" da interface Oracle APEX, copie e execute o script acima, após isso, confira o resultado da criação da tabela na imagem abaixo:
Modificar o tipo de dado de uma coluna na tabela
Note que a coluna sobrenomeCliente deveria ser do tipo de dado VARCHAR2, porém ela foi criada do tipo NUMBER, propositalmente. Dessa forma, é necessário alterar o tipo de dado da coluna em questão.
Para isso, copie e cole o script abaixo e mande executar:
ALTER TABLE CLIENTE MODIFY sobrenomeCliente VARCHAR2(30);
Adicionar uma coluna na tabela
Para adicionar uma coluna na tabela, a sintaxe da declaração ALTER TABLE é:
ALTER TABLE nome_tabela ADD nome_coluna tipo_dado;
nome_tabela: é o nome da tabela a ser modificada do banco de dados.
nome_coluna: é o nome da coluna a ser modificada do banco de dados.
tipo_dado: é o tipo de dado da nova coluna.
Exemplo: Adicionando uma nova coluna na tabela CLIENTE.
ALTER TABLE CLIENTE ADD idade NUMBER(2);
Copie e execute o script acima no APEX e confira a mensagem de alteração da tabela, como ilustra abaixo:
Com isso, a tabela CLIENTE terá uma nova coluna chamada idade.
Adicionar múltiplas colunas na tabela
Para adicionar várias colunas na tabela, a sintaxe da declaração ALTER TABLE é:
ALTER TABLE nome_tabela( ADD(coluna1 tipo_dado, coluna2 tipo_dado, ..., coluna_n tipo_dado );
nome_tabela: é o nome da tabela a ser modificada do banco de dados.
coluna1, coluna2, ... coluna_n: é o nome da coluna a ser modificada do banco de dados.
tipo_dado: é o tipo de dado da nova coluna.
Exemplo: Adicionando duas novas colunas na tabela CLIENTE:
ALTER TABLE CLIENTE ADD( sexo VARCHAR2(1), email VARCHAR2(50) );
Copie e execute o script acima no APEX e confira a mensagem de alteração da tabela, como ilustra abaixo:
Com isso, a tabela CLIENTE terá duas novas colunas chamadas sexo e email.
Para conferir essas mudanças, utilize a instrução DESCRIBE da seguinte maneira:
DESCRIBE CLIENTE;
Será mostrado em seu navegador a ilustração da tabela CLIENTE com as novas colunas idade, sexo e email:
Modificar uma coluna na tabela
Note que ao acrescentar as colunas idade, sexo e email não foi inserido em sua sintaxe a instrução NOT NULL e por isso, na descrição da tabela, essas colunas t≖m um símbolo de marcação informando que são campos anuláveis. Sendo assim, é possível modificar uma coluna acrescentando a informação de que a coluna não pode ser nula.
Para modificar uma coluna na tabela, a sintaxe da declaração ALTER TABLE é:
ALTER TABLE nome_tabela MODIFY nome_coluna tipo_dado;
Exemplo: Modificando uma nova coluna na tabela CLIENTE:
ALTER TABLE CLIENTE MODIFY idade NUMBER(3) NOT NULL;
Observe a mensagem de sucesso após executar o script acima no APEX:
Com isso, a tabela CLIENTE terá a coluna idade modificada para 3 caracteres numéricos e não nula.
Modificar múltiplas colunas na tabela
Para modificar várias coluna na tabela, a sintaxe da declaração ALTER TABLE é:
ALTER TABLE nome_tabela MODIFY( coluna1 tipo_dado, coluna2 tipo_dado, ... coluna_n tipo_dado );
Exemplo: Modificando duas colunas na tabela CLIENTE:
ALTER TABLE CLIENTE MODIFY( sexo VARCHAR2(1) NOT NULL, email VARCHAR2(30) NOT NULL );
Ao copiar e executar o script acima, o APEX irá retornar uma mensagem de sucesso:
Com isso, a tabela CLIENTE terá as colunas sexo e email como sendo não nulas, além disso, a coluna email terá 30 caracteres ao invés de 50 como estava anteriormente.
Após essas alterações, observe a estrutura da tabela ao utilizar a instrução DESCRIBE:
DESCRIBE CLIENTE;
Remover uma coluna na tabela
Para remover uma coluna na tabela, a sintaxe da declaração ALTER TABLE é:
ALTER TABLE nome_tabela DROP COLUMN nome_coluna tipo_dado;
Exemplo: Removendo uma nova coluna na tabela CLIENTE:
ALTER TABLE CLIENTE DROP COLUMN sexo;
Observe a mensagem de sucesso ao executar o script acima:
Com isso, a tabela CLIENTE terá a coluna sexo removida do banco de dados.
Renomear coluna na tabela
Para renomear uma coluna na tabela, a sintaxe da declaração ALTER TABLE é:
ALTER TABLE nome_tabela RENAME COLUMN nome_antigo TO nome_novo;
nome_tabela: é o nome da tabela a ser modificada do banco de dados.
nome_antigo: é o nome antigo da coluna a ser modificada do banco de dados.
nome_novo: é o novo nome da coluna a ser modificada do banco de dados.
Exemplo: Renomeando uma nova coluna na tabela CLIENTE:
ALTER TABLE CLIENTE RENAME COLUMN nomeCliente TO nome_c;
Observe a mensagem de sucesso ao executar o script acima:
Com isso, a tabela CLIENTE terá a coluna nomeCliente renomeada para nome_c.
Renomear tabela
Para renomear uma tabela, a sintaxe da declaração ALTER TABLE é:
ALTER TABLE nome_tabela RENAME TO nome_novo_tabela;
nome_tabela: é o nome da tabela a ser modificada do banco de dados.
nome_novo_tabela: é o novo nome da tabela a ser modificada do banco de dados.
Exemplo: Renomeando a tabela CLIENTE:
ALTER TABLE CLIENTE RENAME TO CONTATO;
Observe a mensagem de sucesso ao executar o script acima:
Com isso, a tabela CLIENTE será renomeada para CONTATO.
Verifique as últimas alterações com a utilização da intrução DESCRIBE.
DESCRIBE CONTATO;
Observe a mensagem de sucesso ao executar o script acima:
Atividade de Fixação
No intuito de fixar a aprendizagem iniciada por meio deste módulo e verificar como está sua compreensão sobre o mesmo, são sugeridos alguns exercícios de fixação para serem resolvidos. Clique no link de exercícios ao lado, pois será por meio dele iniciada a lista de exercícios sobre os conteúdos estudados até este momento. Boa revisão sobre os mesmos!!