O ALTER TABLE é usado para adicionar e/ou remover colunas de uma determinada tabela que esteja em um base de dados. Para isto é necessário informar o nome da tabela, o campo da tabela e caso seja uma adição, será necessário passar o tipo do novo campo.

ALTER TABLE

Cliente

ADD

CPF CHAR(11)

Acima foi criado o campo ‘CPF’ na tabela ‘Cliente’ com o tipo CHAR. Para que o campo aceite valores nulos (NULL), basta adicionar o operador ‘=’ e em seguida a palavra NULL.

Já para remover um campo de uma tabela é ainda mais simples, não havendo a necessidade de inserir o tipo do campo.

ALTER TABLE

Cliente

DROP COLUMN

CPF

Lembrando que, ao remover um campo de uma tabela, não haverá a possibilidade de voltar atrás (não pelo meu conhecimento), a não ser que faça um backup manual ou algo parecido.

Anúncios

Vou lhes ensinar agora como utilizar tabelas temporárias em SQL. Eu conheço duas formas de utilização, sendo que uma requer menos recursos de hardware e o processo é mais rápido (de fato, bem mais rápido).

Segue abaixo o primeiro exemplo:

DECLARE @ID INT
DECLARE @TabelaTemporariaProduto TABLE (

ID INT

)

INSERT INTO

@TabelaTemporariaProduto
SELECT

ProdutoID

FROM

Produto

WHILE (SELECT COUNT(ID) FROM @TabelaTemporariaProduto) > 1

BEGIN

SELECT TOP 1 @ID = ID FROM @TabelaTemporariaProduto

PRINT @ID

DELETE FROM @TabelaTemporariaProduto WHERE ID = @ID

END

Vamos a explicação: as primeiras linhas correspondem a declaração de variáveis, uma do tipo INTEIRO e outra do tipo TABLE, que é um objeto que contém variados tipos de variáveis, não entendeu? Vou explicar melhor. Imagine um carro (Objeto) e suas caracteristicas são os tipos de variáveis, como: cor, cilindrada, portas, combustível, etc. Após isso há uma instrução INSERT, que insere os registros na tabela temporária os ‘IDs’ dos produtos da tabela ‘Produto’. Em seguida, possui uma repetição com uma instrução COUNT que faz a contagem de quantos registros existem na tabela temporária (@TabelaTemporariaProduto) e verifica se a contagem é maior que 1. Atribui o ‘ID’ do produto à variável ‘@ID’ e em seguida faz a impressão do valor, após isso exclui aquele registro da tabela temporária, se isso não ocorrer, o processo entra em looping infinito.

A próxima sequência de instrução SQL é bem mais rápida do que a anterior e utiliza outro tipo de repetição:

DECLARE @ID INT
DECLARE @TabelaTemporariaProduto TABLE (

ID INT

)

INSERT INTO

@TabelaTemporariaProduto
SELECT

ProdutoID

FROM

Produto

DECLARE TempCursor CURSOR

FOR

SELECT

ID

FROM

@TabelaTemporariaProduto

OPEN TempCursor

FETCH NEXT FROM

TempCursor

INTO

@ID

WHILE @@FETCH_STATUS = 0

BEGIN

PRINT @IDFETCH NEXT FROM

TempCursor

INTO

@ID

END

CLOSE TempCursor
DEALLOCATE TempCursor

As primeiras linhas correspondem a declaração das variáveis, faz a inserção dos registros na tabela temporária, declara o CURSOR e informa os campos que irá participar da repetição. Faz a abertura do CURSOR‘ e atribui à variável (ID) o primeiro (e único) campo listado na consulta do CURSOR. A instrução @@FETCH_STATUS corresponde ao sucesso da operação (1 – Ok, -1 – Falhou e -2 – Linha perdida), faz a impressão do ‘@ID’ e em seguida move o ‘CURSOR‘.

Espero que tenham entendido o funcionamento das duas técnicas, deixe seu comentário referente ao artigo.