banco de dados - módulo 2 - aula 4 - select

Download Banco de Dados - Módulo 2 - Aula 4 - Select

If you can't read please download the document

Upload: kaleu-caminha

Post on 26-Jun-2015

2.998 views

Category:

Documents


3 download

DESCRIPTION

Curso Técnico Programação SENAI São José - SC 2011 - Segundo Semestre Disciplina: Banco de Dados I Professor: Kaléu Caminha Módulo 2 Aula 4 Realizar consultas SQL em tabelas únicas com seleção de campos, ordenação, agrupamento e condicionais.

TRANSCRIPT

  • 1. Mdulo 2 Aula 2 DDL Objetivo da Aula Realizar consultas SQL em tabelas nicas com seleo de campos, ordenao, agrupamento e condicionais.IntroduoNesta aula exploraremos:Consultas SQL com;Seleo de campos;Ordenao de Resultado;Condicionais;Agrupamento; Relembrando...Mdulo 1:Mdulo 2:Relembrando com um pouco de SQL....create table livros (id int not null primary key auto_increment,nome varchar(80) not null,preco float not null,vendas int default 0,lancamento date not null);insert into livros (nome, preco, vendas,lancamento) values ("As Brumas de Avalon",40.00, 1700, "1979-01-01");Atividade 1Para exercitar, encontre os 8 erros nos comandos"insert" abaixo:insert into livros (nome preco, vendas,lancamento) values (O Senhor dos Anis,40.00, 5000, "1995-01-01")insert em livros (nome, preco, vendas,lancamento) ("gape", 12, 3500, 2010-01-01);insert into (nome, preco, vendas,lancamento) values ("PHP Profissional",48.00, 412, "01-01-2006"); Consultas SQL; comum que as tabelas tenham alguns milhares deregistros;Para encontrar informaes em grandes quantidades dedados foi desenvolvido o comando Select da linguagemSQL;Este comando o mais amplo e mais importantecomando da linguagem SQL;Sempre que visualiza-se uma lista de qualquer domnio, provvel que esta tenha sido obtida atravs de umaconsulta SQL como por exemplo:Lista de Cifras para violo no cifraclub;Lista de produtos mais vendidos nas americanas.com;Lista de ltimos livros cadastrados na estante virtual;Amigos no Orkut (ou Facebook);Seguidores no Twitter, etc...Exemplo: Tabela de Livros de uma Livraria on-line:Preparando o ambientePara fazermos alguns testes com este comando, importe oarquivo SQL exemplo_select.sql para o mySQL atravs doPHPMyAdmin;Este arquivo contm a tabela utilizada no exemplo acimacom 20 registros fictcios;Para confirmar que voc carregou tudo corretamente,acesse a base de dados:use exemplo_select;e execute o comando Select bsicoselect * from livros;Voc deve ver a tabela livros com todos os seus 20registros. Agora, estamos preparados para aprender estevasto comando.Exibindo apenas o necessrio comum no precisarmos visualizar todos os campos deuma tabela. Se quisermos ver apenas o nome e o preodos livros por exemplo, isso possvel. particularmente importante visualizar apenas asinformaes necessrias em tabelas com grandesvolumes de dados, cuja carga de muitas informaespoderia sobrecarregar a memria do computador.Fazemos isso substituindo o * (asterisco) da consulta pelalista de campos que desejamos visualizar, separados porvrgula.Exemplo 1: Apenas nome e preo dos livrosselect nome, preco from livros;Exemplo 2: Apenas nome e gnero dos livrosselect nome, genero from livros;Atividade 3Faa uma consulta visualizando apenas nomee nmero de vendas de um livro.Erros ComunsEsquecer a vrgula entre os campos.Informar o nome de um campo que no existe.Tudo em OrdemAgora que j exibimos apenas os campos necessriospodemos tambm ordenar os resultados de forma maisagradvel.Podemos ordenar os resultados por alguma informaode forma crescente ou decrescente.No select o comando order by adicionado ao final daexpresso, seguido do nome do campo que vai serordenado e de um termo para informar se a ordenao crescente (asc) ou decrescente (desc).Exemplo 3: Livros em ordem alfabticaselect nome from livros order by nome asc;Exemplo 4: Livros mais vendidosselect nome, vendas from livros order byvendas desc;Exemplo 5: Livros menos vendidosselect nome, vendas from livros order byvendas asc;Colocando LimitesGeralmente, as listas de mais vendidos e ltimoslanamentos exibem apenas uma parcial dos resultados.Os ltimos 5, 10, 20, etc.Para limitarmos o nmero de registros que devemaparecer em uma consulta utilizamos a clusula limit logoaps o order by.Exemplo 6: Os 5 livros mais vendidos podemos executar:select nome, vendas from livros order byvendas desc limit 5;Atividade 4Consulte os 10 ltimos lanamentos da lista.Atividade 5Consulte os 3 livros mais antigos da lista.Atividade 6 necessrio informar "asc" ou "desc" em todas asconsultas? Tente remov-lo de alguma instruo edescubra o que acontece.Erros mais comunsEscrever orderby ao invs de order by;informar algum nome de campo que no existe;Inverter a posio de limit e order by; Mas e se...Tambm podemos adicionar condicionais s nossasbuscas.Dessa forma, extramos das tabelas apenas uma porodos dados.Livrarias costumam ter todos os seus registros de livrosem apenas uma tabela e apresentar opes de filtragemdestes dados como:Filtro por preo;Por data de lanamento;Por gnero;Por autor;etc...A incluso destas condies feita atravs da clusulawhere seguida das condies que desejamos:Exemplo 7: Filtro por gneroselect nome, genero from livros where genero ="ficcao";Exemplo 8: Filtro por preo menor que 20 reais.select nome, preco from livros where preco < 20;Exemplo 9: Livros com data de lanamento maior que 1 de janeiro de 2010.select nome, lancamento from livros wherelancamento > "2010-01-01";Realizando BuscasO comando where o corao dos filtros e buscas embanco de dados. Sempre que voc faz uma busca emalgum site, provavelmente ele est adicionando clusulaswhere sua instruo select.Para realizar buscas parciais por textos podemos usar ocomando like com o coringa %. O coringa representa"qualquer coisa".Exemplo 10: Selecionar nomes de livros comeando com "A".select nome from livros where nome like "A%";Exemplo 11: Selecionar nomes de livros terminando com "Anis".select nome from livros where nome like"%Anis";Exemplo 12: Selecionar nomes de livros com a palavra "Amor".select nome from livros where nome like"%Amor%";Vrias condies em uma mesma consultaTambm podemos usar operadores lgicos and e or pararealizar buscas por mais de um campo da tabela.Exemplo 13: Todos os livros de fico por menos de 20 reais.select nome, genero, preco from livros wheregenero = "ficcao" and preco < 20;Exemplo 14: Todos os livros entre 20 e 40 reais.select nome, preco from livros where preco >20 and preco < 40;Exemplo 15: Todos os livos com vendas abaixo de 1000 ou acima de 3000.select nome, vendas from livros where vendas< 1000 or vendas > 3000;Juntando tudoLembre-se que a ordenao e o limite s soacrescentados ao fim da consulta. A clusula where deveestar logo aps o nome da tabela consultada.Exemplo 16: Trs livros entre 20 e 40 reais ordenados do mais barato ao maiscaro.select nome, preco from livros where preco >20 and preco < 40 order by preco asc;Atividade 7Busque todos os livros com vendas acima de 2000ordenados pelo mais vendidoAtividade 8Busque os 5 ltimos lanamentos dos livros de fico.Atividade 9Busque todos os livros de no fico com lanamentoem 2011.Atividade 10Lista os trs livros com maior vendagem cujolanamento anterior ao ano de 2010.Contando e AgrupandoOutro recurso a contagem de itens em uma tabela. Nesteexemplo sabemos de antemo que temos 20 registros,porm, a maioria dos sistemas tem alguma forma deincluso de registros, o que altera de tempos em tempos onmero de registros em uma tabela.Para calcularmos qualquer coisa utilizamos funes deagrupamento no SQL.A primeira que veremos a funo count().Atravs dela podemos contar o nmero de registros emuma tabelaExemplo 17: Nmero de registros na tabela.select count(*) from livros;Outras funes de agrupamento so:MAX: retorna o registro com maior valor;MIN: retorna o registro com menor valor;SUM: A soma dos itens;Exemplo 18: Uso do MAXselect MAX(preco) from livros;Exemplo 19: Uso do MINselect MIN(preco) from livros;Exemplo 20: Uso do AVERAGEselect SUM(vendas) from livros;AgrupamentoSozinhas, as funes de agrupamento no so muitoteis, porm, quando as utilizamos em conjunto comagrupamentos podemos realizar consultas para informardados agregados.A clusula group by usada para isto e sempre vem antesdo order by;Exemplo 21: Nmero de livros por gneroselect genero, count(*) from livros group bygenero;Exemplo 22: Preo mximo de um livro por gneroselect genero, max(preco) from livros groupby genero;Atividade 11:Soma das vendas por gneroAtividade 12:Observe os dados da tabela e tente identificar queoutras consultas poderiam ser executadas sobre estes

2. dados. Crie pelo menos uma consulta que no foirealizada nos exemplos anteriores. ConcluindoVimos as principais clusulas do comando Select.Exploraremos ainda mais este comando nas prximasaulas. A partir de agora, usaremos select em todas asnossas aulas.