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:

ALTER TABLE Nome_Tabela
ADD Nome_Campo Nova_Regra
MODIFY Nome_Campo Nova_Regra;

A Operação Update

editar

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.

  1. Modificar o SALARIO da tupla de EMPREGADO com SSN = '993242134' para 24000.
  2. Aceitável.
  3. Modificar o DNO da tupla de EMPREGADO com SSN = '9997787654' para 5.
  4. 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.

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:

ALTER TABLE Cliente
ADD Tel_Comercial INT;

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:

ALTER TABLE Cliente
ADD Nome_Mae VARCHAR(60);

Caso desejemos que um campo seja inserido antes ou depois de um determinado campo de nossa tabela, utilizamos a seguinte sintaxe:

ALTER TABLE Nome_Tabela
ADD Nome_Campo Nova_Regra [FIRST|AFTER] Campo_Determinado;

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:

ALTER TABLE Cliente
ADD Nome_Mae VARCHAR(60)AFTER Nome;

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:

ALTER TABLE Cliente
ADD PRIMARY KEY(Nome);

Se desejarmos eliminar uma coluna de nossa tabela, utilizamos a seguinte sintaxe:

ALTER TABLE Nome_Tabela
DROP nome_campo;

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:

ALTER TABLE Cliente
rename to novoNomeDaTabela;

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:

ALTER TABLE Cliente
change column antigoNomeDaColuna novoNomeDaColuna tipoDeDadoDestaColuna eAsContrains;

MODIFY

editar

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:

ALTER TABLE Cliente
MODIFY Nome(100);

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:

ALTER TABLE Cliente
MODIFY Nome CHAR (100);