Escolar Documentos
Profissional Documentos
Cultura Documentos
no universo de Banco de Dados utilizando os principais comandos: INSERT, UPDATE, DELETE e SELECT. por
Helbert Carvalho Tiago
537 104 20 104
Nesse artigo veremos como incluir, excluir e atualizar registros em um banco de dados. No final do artigo descreverei uma introduo sobre sub-consultas.
INSERINDO DADOS
O comando para incluso de dados o INSERT, que possui a seguinte estrutura: Listagem 1: Sintaxe do comando insert
1INSERT INTO nome_tabela (lista-de-campos) 2VALUES (lista_dados) 3--OU 4INSERT INTO nome_tabela VALUES (lista_dados)
Onde: o Nome_tabela: nome da tabela no qual ser inserido os dados. o Lista-de-campos: nome das colunas que recebero os valores. o Lista-dados: valores que sero inseridos na tabela. Estes campos devem estar na mesma ordem descrita em lista-de-campos, todos separados por vrgula. Se for utilizado um comando SELECT o mesmo deve retornar a mesma quantidade de colunas com os mesmos tipos de dados especificados em lista-de-campos. Exemplos: Listagem 2: Exemplos do comando insert
1INSERT INTO EMPREGADOS(CODIGO, NOME, SALARIO, SECAO) 2VALUES(1, "HELBERT CARVALHO", 1.500, 1) 3INSERT INTO EMPREGADOS VALUES(1,"HELBERT CARVALHO",1500,1)
Na segunda opo foi omitida a declarao dos campos. Essa sintaxe funciona somente se for repassado valores para todas as colunas. Podemos tambm passar valores atravs de um comando SELECT, conforme abaixo: Listagem 3: Insert com valores provenientes de um select
1INSERT INTO EMPREGADOS(CODIGO,NOME, SALARIO, SECAO) 2 SELECT CODIGO,NOME,SALARIO, SECAO FROM EMPREGADOS_FILIAL 3 WHERE DEPARTAMENTO = 2 4
Neste comando todos os empregados da tabela EMPREGADOS_FILIAL foram cadastrados na tabela EMPREGADOS. Se o nome dos campos no for citado no comando INSERT, o SELECT dever retornar valores compatveis para todos os campos disponveis na tabela de destino.
ATUALIZANDO DADOS
O comando para atualizar registros UPDATE, que tem a seguinte sintaxe: Listagem 4: Sintaxe do comando update
Onde: Nome_tabela: nome da tabela que ser modificada Campo: campo que ter seu valor alterado Novo_valor: valor que substituir o antigo dado cadastrado em campo Where: Se no for informado, a tabela intera ser atualizada Condio: regra que impe condio para execuo do comando Exemplos: Listagem 5: Exemplos de uso do comando update
1UPDATE EMPREGADOS 2SET SALARIO = salario * 1.1 3WHERE SALARIO = (SELECT MIN(salario) FROM EMPREGADOS)
O comando SELECT tambm pode ser utilizado na atribuio de valor ao campo: Listagem 8: Update passando select como valor
1UPDATE EMPREGADOS 2SET SALARIO = (SELECT MAX(salario) FROM EMPREGADOS) 3WHERE DEPARTAMENTO = 5
REMOVENDO DADOS
O comando utilizado para apagar dados o DELETE. Listagem 9: Sintaxe do comando delete
Onde: Nome_tabela: nome da tabela que ser modificada Where: clusula que impe uma condio sobre a execuo do comando Exemplo: Listagem 9: Exemplo de uso do comando delete
Sub-consultas SQL
Uma sub-consulta uma instruo SELECT aninhada dentro de outra instruo SELECT, INSERT, DELETE ou UPDATE. Veja abaixo alguns exemplos de sintaxe: o Comparao [ANY|SOME|ALL] (instruo sql) o Expresso [NOT] IN (instruo sql) o Expresso [NOT] EXISTS (instruo sql) Os predicados ANY e SOME, sinnimos, so utilizados para recuperar registro na consulta principal que satisfaam a comparao com qualquer registro da sub-consulta. Tabela A XY 1 5 2 9 3 10 4 6 Tabela B X Y 10 4 20 3 30 11 40 9 Exemplo: Listagem 11: Exemplo de subconsulta
1SELECT * FROM A WHERE Y > ANY (SELECT Y FROM B WHERE X < 40)
Resultado: XY 1 5 2 9 3 10 4 6 Todos os registros foram selecionados porque o valor de y no resultado da sub-consulta assume 3, que menor do que todos os valores de y da tabela A. Se utilizarmos o ANY com sinal de igualdade teremos o mesmo resultado da clusula IN. Exemplo: Listagem 13: Exemplo com o operador ANY e sinal de igualdade
1UPDATE A 2SET X = X * 10 3WHERE Y > ANY (SELECT Y FROM B WHERE X < 40)
Listagem 15: Delete usando o operador ANY
1DELETE FROM A 2WHERE Y > ANY (SELECT Y FROM B WHERE X < 40)
O predicado ALL utilizado para recuperar os registros da consulta principal que satisfaam a comparao com todos os registros recuperados na sub-consulta. Observe os exemplos: Listagem 16: Exemplo de select com operador ANY
1SELECT * FROM A WHERE Y > ALL (SELECT Y FROM B WHERE X > 30)
Resultado: XY 3 10 O uso de != ALL equivale a NOT IN. Listagem 18: Subconsulta com operador ALL
1SELECT * FROM EMPREGADO WHERE CODIGO IN 2(SELECT CODEMPREGADO FROM VENDAS 3GROUPY BY CODEMPREGADO 4HAVING MAX(VALORTOTAL) > 50000)
De maneira contrria, NOT IN pode ser utilizado para recuperar apenas os registros na consulta principal para os quais no exista equivalncia na sub-consulta. Listagem 21: Select com operador NOT IN
1SELECT * FROM EMPREGADO WHERE EXISTS 2(SELECT * FROM PEDIDOS 3 WHERE EMPREGADO.CODIGO = PEDIDOS.CODEMPREGADO 4 GROUP BY PEDIDOS.CODEMPREGADO 5 HAVING MAX(PEDIDOS.VALOR_TOTAL) > 50000)
Neste comando so retornados o nome e o departamento dos funcionrios cuja soma de vendas ultrapassaram R$ 50.000,00.
O predicado NOT EXISTS tambm pode ser utilizado produzindo o efeito contrrio: Listagem 23: Consulta com operador NOT EXISTS
1SELECT * FROM EMPREGADO WHERE NOT EXISTS 2(SELECT * FROM PEDIDOS 3WHERE EMPREGADO.CODIGO = PEDIDOS.EMPREGADO)
Concluso
Os comandos SQL fornecem uma linguagem simples para manipulao de dados em um SGBD. Como o SQL se tornou um padro, os comandos apresentados funcionaro na maioria dos bancos de dados relacionais. Consulte o help do seu banco de dados para possveis alteraes ou particularidades.
Referncias
o o
Slides do professor Daniel Wildt da Universidade Federal do Rio Grande do Sul BATTISTI, Julio. SQL SERVER 2005 ADMINISTRAO E DESENVOLVIMENTO