Daniel [email protected]
Atualizando e excluindo Dados
Comando UPDATE – Altera registros da tabela
UPDATE tabelaSET nome_coluna = expressao [, nome_coluna =
expressao,..][FROM tabela1 JOIN tabela2 ON expressaoJoin [JOIN tabela3 ON expressaoJoin, ...][WHERE condição]
Operador Descrição+ Adição- Subtração* Multiplicação/ Divisão% Retorna o resto inteiro de uma divisão= Atribuição
+= Soma e atribui-= Subtrai e atribui*= Multiplica e atribui/= Divide e atribui%= Obtém o resto da divisão e atribui
-- OperadoresDECLARE @AINT =10SET @A += 5 -- O mesmo que SET @A = @A + 5PRINT @ASET @A -= 2 -- O mesmo que SET @A = @A -2PRINT @ASET @A *= 4 -- O mesmo que SET @A = @A * 4PRINT @ASET @A /= 2 -- O mesmo que SET @A = @A / 2PRINT @ASET @A %= 5 -- O mesmo que SET @A = @A % 5PRINT @A
Alterando dados de uma coluna-- Aumenta o salário de todos os funcionários em 20%UPDATE EMPREGADOSSET SALARIO = SALARIO * 1.2;-- OUUPDATE EMPREGADOSSET SALARIO *= 1.2;-- Soma 2 na quantidade de dependentes do funcionário código 5UPDATE EMPREGADOSSET NUM_DEPEND = NUM_DEPEND + 2WHERE CODFUN = 5;-- OUUPDATE EMPREGADOSSET NUM_DEPEND += 2WHERE CODFUN = 5;
Alterando dados de diversas colunas
-- Corrigindo o endereço do cliente de código 5SELECT * FROM CLIENTES WHERE CODCLI = 5
-- Alterando os dados do cliente de código 5UPDATE CLIENTESSET ENDERECO = 'AV. PAULISTA, 1009 - 10 AND', BAIRRO = 'CERQUEIRA CESAR', CIDADE = 'SÃO PAULO'WHERE CODCLI = 5;-- A linha a seguir confere o resultado da alteraçãoSELECT * FROM CLIENTES WHERE CODCLI = 5
-- Corrigindo dados de um grupo de produtosSELECT * FROM PRODUTOSWHERE COD_TIPO = 5
-- Alterando os dados do grupo de produtosUPDATE PRODUTOS SET QTD_ESTIMADA = QTD_REAL, CLAS_FISC = '96082000', IPI = 8WHERE COD_TIPO = 5;
-- A linha a seguir confere o resultado da alteraçãoSELECT * FROM PRODUTOSWHERE COD_TIPO = 5
Utilizando TOP com UPDATE
-- ConsultarSELECT * FROM EMPPEGADOS;
-- Multiplicar por 10 o valor do SALARIO de 15 registros da tabelaUPDATE TOP(15) EMPREGADOS SET SALARIO = 10*SALARIO;
-- ConsultarSELECT * FROM EMPPEGADOS;
DELETE – Comando para excluir registrosDELETE [FROM] tabela[FROM tabela1 JOIN tabela2 ON expressaoJoin [JOIN tabela3 ONexpressaoJoin, ...][WHERE condicao]
TRUNCATE – Comando que elimina todas as linhas da tabela- Não realiza LOG de exclusão de cada uma das linhas- A tabela não terá páginas de dados vazias- Os valores originais das colunas autonumeráveis serão restabelecidos
TRUNCATE TABLE <nome da tabela>
-- Criação de uma cópia da tabela EmpregadosSELECT * INTO EMPREGADOS_TMP FROM EMPREGADOS-- Mostra os empregados que ganham mais de 5000SELECT * FROM EMPREGADOS_TMP WHERE SALARIO > 5000-- Excluir os empregados que ganham mais de 5000DELETE FROM EMPREGADOS_TMP WHERE SALARIO > 5000-- Verifica se os empregados foram excluídosSELECT * FROM EMPREGADOS_TMP WHERE SALARIO > 5000
-- Excluir os empregados de código 3, 5 e 7-- Lista os empregadosSELECT * FROM EMPREGADOS_TMP WHERE CODFUN IN
(3,5,7)-- Exclui os empregadosDELETE FROM EMPREGADOS_TMP WHERE CODFUN IN (3,5,7)-- Verifica se os empregados foram excluídosSELECT * FROM EMPREGADOS_TMP WHERE CODFUN IN
(3,5,7);
Excluindo todos os registros da tabela
DELETE FROM EMPREGADOS_TMP-- OUTRUNCATE TABLE EMPREGADOS_TMP
--Verifica se existe empregados cadastrados
SELECT * FROM EMPREGADOS_TMP
Utilizando TOP com DELETE
-- Criar a tabela a partir do comando SELECT INTOSELECT * INTO CLIENTE_MG FROM CLIENTES;-- Consultar CLIENTE_MGSELECT * FROM CLIENTE_MG;-- Apagar somente 10 registrosDELETE TOP(10) FROM CLIENTE_MG;-- ConsultarSELECT * FROM CLIENTE_MG;
Cláusula OUTPUT é responsável por retornar resultados com base em linhas que tenham sido afetadas por uma instrução INSERT, UPDATE, DELETE e MERGE.
@ACTION retorna a ação executada pela instrução MERGE em cada registro
Exemplo
Operação INSERTED DELETED
INSERT XDELETE XUPDATE X X
-- Gera uma cópia da tabela EMPREGADOS chamada EMP_TEMP
CREATE TABLE EMP_TEMP( CODFUN INT PRIMARY KEY, NOME VARCHAR(30), COD_DEPTO INT, COD_CARGO INT, SALARIO NUMERIC(10,2) );
-- Inserir dados e exibir os registros inseridosINSERT INTO EMP_TEMP OUTPUT inserted.*SELECT CODFUN, NOME, COD_DEPTO, COD_CARGO, SALARIOFROM EMPREGADOS;
-- Deleta registros e mostra os registros deletadosDELETE FROM EMP_TEMP OUTPUT DELETED.*WHERE COD_DEPTO = 2;
-- Altera registros e mostra os dados antes e depois da alteração
UPDATE EMP_TEMP SET SALARIO *= 1.5OUTPUT INSERTED.CODFUN, INSERTED.NOME,
INSERTED.COD_DEPTO, DELETED.SALARIO, INSERTED.SALARIOWHERE COD_DEPTO = 3;
TransaçõesMarca o ponto inicial de uma transação local explícita. A duração é o tempo até o encerramento da transação.
BEGIN TRANSACTIONComando que inicia uma transação explícita
COMMIT TRANSACTION E COMMIT WORKComando para encerramento com êxito da transação
ROLLBACK TRANSACTION E ROLLBACK WORKComando para encerramento sem êxito da transação
Laboratório Página 210 até 215