consultas em sql e dml.txt

Download consultas em SQL e DML.txt

If you can't read please download the document

Upload: izaiassb

Post on 05-Jan-2016

214 views

Category:

Documents


1 download

TRANSCRIPT

Comandos bsicos em SQL - insert, update, delete e selectEste artigo visa auxiliar iniciantes que pretendem iniciar no universo de Banco de Dados utilizando os principais comandos: INSERT, UPDATE, DELETE e SELECT.por Helbert Carvalho Tiago 989 150 47 146 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 DADOSO comando para incluso de dados o INSERT, que possui a seguinte estrutura:Listagem 1: Sintaxe do comando insert1234INSERT INTO nome_tabela (lista-de-campos)VALUES (lista_dados)--OUINSERT INTO nome_tabela VALUES (lista_dados)Onde: Nome_tabela: nome da tabela no qual ser inserido os dados. Lista-de-campos: nome das colunas que recebero os valores. 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 insert123INSERT INTO EMPREGADOS(CODIGO, NOME, SALARIO, SECAO)VALUES(1, "HELBERT CARVALHO", 1.500, 1)INSERT 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 select1234INSERT INTO EMPREGADOS(CODIGO,NOME, SALARIO, SECAO) SELECT CODIGO,NOME,SALARIO, SECAO FROM EMPREGADOS_FILIAL WHERE DEPARTAMENTO = 2Neste 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 DADOSO comando para atualizar registros UPDATE, que tem a seguinte sintaxe:Listagem 4: Sintaxe do comando update123UPDATE nome_tabelaSET CAMPO = "novo_valor"WHERE CONDIOOnde: 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 comandoExemplos:Listagem 5: Exemplos de uso do comando update123UPDATE DEPARTAMENTOSET SALARIO = 1000WHERE CODIGODEP = 1No trecho acima, todos os colaboradores que fazem parte do departamento 1 ter o salrio alterado para 1000.Listagem 6: Update em mais de um campo123UPDATE DEPARTAMENTOSET NOME = "HELBERT CARVALHO",SALARIO = 1000WHERE CODIGO = 1Neste exemplo alteramos mais de um campo de uma vez.Podemos combinar o comando SELECT com UPDATE. No exemplo a seguir, os funcionrios de menor salrio recebero aumento de 10%.Listagem 7: Outro exemplo de uso do comando update123UPDATE EMPREGADOSSET SALARIO = salario * 1.1WHERE 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 valor123UPDATE EMPREGADOSSET SALARIO = (SELECT MAX(salario) FROM EMPREGADOS)WHERE DEPARTAMENTO = 5REMOVENDO DADOSO comando utilizado para apagar dados o DELETE.Listagem 9: Sintaxe do comando delete12DELETE FROM nome_tabelaWHERE condioOnde: Nome_tabela: nome da tabela que ser modificada Where: clusula que impe uma condio sobre a execuo do comandoExemplo:Listagem 9: Exemplo de uso do comando delete12DELETE FROM EMPREGADOSWHERE CODIGO = 125Sub-consultas SQLUma sub-consulta uma instruo SELECT aninhada dentro de outra instruo SELECT, INSERT, DELETE ou UPDATE. Veja abaixo alguns exemplos de sintaxe: Comparao [ANY|SOME|ALL] (instruo sql) Expresso [NOT] IN (instruo sql) 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 AX Y1 52 93 104 6Tabela BX Y 10 4 20 3 30 11 40 9Exemplo:Listagem 11: Exemplo de subconsulta12SELECT * FROM AWHERE Y > ANY (SELECT Y FROM B WHERE X>20)Resultado:X Y3 10Os registros da tabela A que forem maior do que qualquer registro do resultado da sub-consulta sero selecionados. Repare que nenhum registro da tabela A maior do que 11, no entanto, o terceiro registro maior do que 9.Vamos a outro exemplo:Listagem 12: Exemplo de subconsulta com o operador ANY1SELECT * FROM A WHERE Y > ANY (SELECT Y FROM B WHERE X < 40)Resultado:X Y1 52 93 104 6Todos 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 igualdade1SELECT * FROM A WHERE Y = ANY (SELECT Y FROM B)Resultado:X Y2 9O predicado ANY tambm pode ser utilizado em conjunto com os comandos UPDATE e DELETE. Veja o exemplo:Listagaem 14: Update usando o operador ANY123UPDATE ASET X = X * 10WHERE Y > ANY (SELECT Y FROM B WHERE X < 40)Listagem 15: Delete usando o operador ANY12DELETE FROM AWHERE 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 ANY1SELECT * FROM A WHERE Y > ALL (SELECT Y FROM B)Resultado:X YListagem 17: Outro exemplo de select com operador ANY1SELECT * FROM A WHERE Y > ALL (SELECT Y FROM B WHERE X > 30)Resultado:X Y3 10O uso de != ALL equivale a NOT IN.Listagem 18: Subconsulta com operador ALL1SELECT * FROM A WHERE Y != ALL (SELECT Y FROM B)Resultado:X Y1 53 104 6O predicado IN utilizado para recuperar apenas os registros na consulta principal que contm equivalncia na sub-consulta. o mesmo que =ANY.Listagem 19: Consulta com operador IN1SELECT * FROM A WHERE Y IN(SELECT Y FROM B)Resultado:X Y2 9No cdigo a seguir retornamos os empregados que venderam um montante maior que R$ 50.000,00.Listagem 20: Select com operador IN utilizando HAVING1234SELECT * FROM EMPREGADO WHERE CODIGO IN(SELECT CODEMPREGADO FROM VENDASGROUPY BY CODEMPREGADOHAVING 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 IN1SELECT * FROM A WHERE Y NOT IN(SELECT Y FROM B)Resultado:X Y1 53 104 6O predicado EXISTS determina se a sub-consulta retorna algum registro. Esta clusula produz resultados semelhantes ao uso de IN. Veja exemplo:Listagem 22: Consulta com operador EXISTS12345SELECT * FROM EMPREGADO WHERE EXISTS(SELECT * FROM PEDIDOS WHERE EMPREGADO.CODIGO = PEDIDOS.CODEMPREGADO GROUP BY PEDIDOS.CODEMPREGADO 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 EXISTS123SELECT * FROM EMPREGADO WHERE NOT EXISTS(SELECT * FROM PEDIDOSWHERE EMPREGADO.CODIGO = PEDIDOS.EMPREGADO)ConclusoOs 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.Read more: http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-insert-update-delete-e-select.aspx#ixzz3nnzLBioi Em linguagem SQL as instrues DDL (Data Definition Language) so usadas para definir a estrutura dos dados, isto , tudo que diz respeito criao de tabelas e demais objetos de banco de dados, alterao e excluso destas estruturas.Trabalhar com as estruturas das tabelas basicamente envolve trs operaes: Criar, alterar ou excluir a tabela. No processo de alterao ocorre ainda outra diviso, ou seja, a alterao envolve incluir campos, alterar ou remover um ou mais campos da tabela.Criar tabela com create tablePara criar tabelas em um banco de dados, usamos o comando create table.Exemplo:CREATE TABLE empregados ( codigo_empregado int identity primary key, nome varchar(60), data_nascimento datetime, salario decimal(10,2), cidade varchar(60), estado varchar(30))Vamos ver o que significa cada termo acima: CREATE TABLE - comando usado para criar uma tabela no banco de dados empregados - nome da tabela codigo_empregado,nome,data_nascimento,salario,cidade e estado - nome dos campos ou colunas da tabela empregados int, varchar, decimal e datetime - define o tipo de dados que cada campo ir receber identity - (apenas SQL Server) indica que o campo ter o seu valor preenchido automaticamente com um nmero sequencial e no reaproveitvel. primary key - indica que o campo ser uma chave do tipo primria varchar(xx) - como visto o varchar indica o tipo de dado que o campo vai receber e o xx a quantidade mxima de caracteres. decimal(10,2) - decimal o tipo, 10 indica que o campo poder receber at 10 posies, sendo 8 inteiro e 2 para as casas decimais.Existem diversos tipos de campos que podemos usar no SQL Server, veja a lista dos principais: Int - Este campo armazenar um valor numrico inteiro Decimal - Aceita valores numricos com casas decimais, neste caso deve ser informado a quantidade de casas decimais desejadas. Exemplo: decimal(10,2), indica que iremos armazenar oito posies numricas e duas casas decimais. Varchar - Aceita valores do tipo texto. necessrio especificar o tamanho desejado. Text - Aceita valores do tipo texto Datetime - Aceita valores do tipo data e hora. O formato de gravao ser mm/dd/aaaa hh:mm:ss Bit - Valor inteiro 0 ou 1Alterar tabela com alter tableUma vez criada, uma tabela poder sofrer alteraes em sua estrutura, para realizar essas alteraes usamos o comando ALTER TABLE.As alteraes na estrutura da tabela podem ser para: Adicionar um campo Alterar um campo Remover um campoAdicionar um campoVamos adicionar o campo sexo na tabela empregados criada no post anterior.ALTER TABLE empregados ADD sexo varchar(10)Observe que usamos a condio ADD que indica que estamos adicionando. possvel ainda adicionar mais de um campo de uma mesma vez, para isto basta usar uma vrgula para separar a os itens da lista de campos a serem inseridas. Veja o prximo exemplo onde iremos adicionar os campos CPF e RG na tabela empregados.ALTER TABLE empregados ADD cpf varchar(20),rg varchar(15)Alterar um campoPara alterar o campo sexo j existente, usamos a condio MODIFY COLUMN. Exemplo:ALTER TABLE empregados ALTER COLUMN sexo varchar(30)Podemos alterar o tipo e o tamanho, mas no o nome do campo. Veja ainda outro exemplo onde estaremos alterando o tipo de dados do campo cpf.ALTER TABLE empregados ALTER COLUMN cpf intRemover um campoPara excluir um campo usamos a condio DROP COLUMN. Exemplo:ALTER TABLE empregados DROP COLUMN sexoou aindaALTER TABLE empregados DROP COLUMN cpf,rgApagar tabela com drop tablePara excluir uma tabela do nosso banco de dados, usamos o comando DROP TABLE como no exemplo a seguir.DROP TABLE empregadosAo excluir uma tabela todos os dados sero excludos, naturalmente.