# SQL/Alterando tabelas

Após criarmos uma tabela em um banco de dados, podemos alterar sua estrutura com o uso da cláusula ALTER TABLE. Deve-se notar que esta alteração é sempre sobre a estrutura da tabela, e não sobre os dados da tabela (este tipo de alteração será vista mais adiante).
Esta alteração da tabela é efetuada de duas formas: ou acrescentando um novo campo (utilizando ADD) ou alterando-se as propriedades de um campo já existente (utilizando-se MODIFY). O comando ALTER TABLE segue a seguinte sintaxe:

## A Operação Update

A operação Update (ou Modify) é usada para mudar os valores de um ou mais atributos em uma tupla ( ou tuplas) de alguma relação R. É necessário especificar uma dondição nos atributos da relação para selecionar a tupla ( ou tuplas) a ser modificada.
* Modificar o SALARIO da tupla de EMPREGADO com SSN = '993242134' para 24000.
* Aceitável.
* Modificar o DNO da tupla de EMPREGADO com SSN = '9997787654' para 5.
* Inaceitável, porque viola a integridade referencial.
Modificar um valor de chave primária é similar a remover uma tupla e inserir outra em seu lugar, porque a usamos para identificá-las. Se um atributo de chave estrangeira for modificado, o SGBD deverá se certificar de que o novo valor refere-se a uma tupla existente na relação que foi referida ou é null. Quando uma restrição de integridade referencial é especificada na DDL, o SGBD permitirá ao usuário escolher as opções distintas para tratar uma violação causada por Delete e uma causada por Update.

## ADD

Podemos utilizar a cláusula ADD para adicionar um novo campo em uma tabela, onde devemos definir seu tipo da mesma forma como fazemos ao criar um campo em uma nova tabela. Por exemplo, imaginemos que devemos inserir mais um campo chamado Telefone Comercial no final da tabela Cliente:
Da mesma forma, campos com tamanhos definidos, devem ter seu tamanho especificado. Assim se desejamos inserir mais um campo do tipo VarChar, chamado por exemplo de Nome da Mãe em nossa tabela Cliente fazemos:
Caso desejemos que um campo seja inserido antes ou depois de um determinado campo de nossa tabela, utilizamos a seguinte sintaxe:
Assim, se inserirmos FIRST, o novo campo será criado antes do campo escolhido da tabela. Se utilizarmos AFTER, depois. Desta forma se quisermos incluir o campo Nome_Mãe imediatamente depois do Nome do Cliente, digitamos:
Alguns gerenciadores também utilizam a cláusula ADD COLUMN ao invés de somente ADD. Podemos também utilizar ADD para adicionar por exemplo uma chave primária em uma tabela. Em nossa tabela, se quisermos que nome seja uma chave primária também, podemos fazer:
Se desejarmos eliminar uma coluna de nossa tabela, utilizamos a seguinte sintaxe:
Alguns gerenciadores também utilizam a cláusula DROP COLUMN ao invés de somente DROP.
Podemos no entanto, atendendo as circunstâncias, ter a pretensão de alterar/mudar o nome da tabela em que se esteja a trabalhar. Para tal usa-se o seguinte comando:
Pode-se também, alterar/mudar o nome de uma das colunas já existentes na tabela em que se esteja atrabalhar. Assim, usam-se os seguintes códigos:

## MODIFY

Podemos utilizar a cláusula MODIFY para modificar as propriedades de um campo em uma tabela. Por exemplo, imaginemos que devemos modificar o tamanho de nosso campo Nome na tabela Cliente, que é de 60 para 100. Então podemos escrever:
Com a cláusula MODIFY, também podemos alterar o tipo de um campo. Imaginemos que por um motivo qualquer desejemos alterar o tipo do campo Nome de VarChar para Char: