Ia2 Tutorial SQL III

download Ia2 Tutorial SQL III

of 4

description

exercícios sql práticos informática banco de dados

Transcript of Ia2 Tutorial SQL III

  • Tutorial SQL

    Seu guia prtico para execuo de consultas Parte final

    Reinaldo Viana

    Prezado Leitor, nesta ltima parte do tutorial SQL, estudaremos consultas envolvendo

    funes de agregao, alm da elaborao de subconsultas.

    Tenha uma tima leitura!

    Exemplo 01: Listar a quantidade de clientes.

    Resposta:

    SELECT COUNT(*)

    FROM CLIENTE

    Comentrio: o comando count serve para contabilizar o nmero de linhas de uma

    consulta. No exemplo, count(*) retornou o nmero de linhas da tabela CLIENTE que,

    nesse contexto, representa o nmero de clientes.

    Exemplo 02: Listar a quantidade de clientes do sexo feminino.

    Resposta:

    SELECT COUNT(*)

    FROM CLIENTE

    WHERE sexo=feminino

    Comentrio: trata-se de uma soluo semelhante do exemplo 1. Apenas foi

    adicionada a clusula WHERE com um filtro que recupera as linhas correspondentes s

    pessoas do sexo feminino (sexo=feminino).

    Exemplo 03: Obter a mdia de salrio dos clientes.

    Resposta:

    SELECT AVG(salario)

    FROM CLIENTE

    Comentrio: esta uma soluo simples. Bastou a utilizao da funo que calcula a

    mdia (avg) a partir de um conjunto de valores (neste caso, o campo salrio da tabela

    CLIENTE). Uma alternativa pode ser vista na Nota 1.

    Nota 1. Renomeando campos em consultas

    possvel renomear virtualmente qualquer coluna resultante de uma consulta. Este

    procedimento til para deixar o cdigo mais organizado e coerente. Dessa forma,

    possvel reescrever a soluo do Exemplo 03 da seguinte maneira:

    SELECT AVG(salario) as MediaSalarial

  • FROM CLIENTE

    Exemplo 04: Obter a mdia salarial por sexo.

    Resposta:

    SELECT sexo, AVG(salario) as MediaSalarialSexo

    FROM CLIENTE

    GROUP BY sexo

    Comentrio: esta soluo semelhante do exemplo 10. Aqui, foi adicionado o campo

    (sexo) na clusula GROUP BY para que o resultado fosse calculado para o sexo

    masculino e para o feminino.

    Exemplo 05: Mostrar, em uma linha, a quantidade de clientes do sexo masculino e a

    quantidade de clientes do sexo feminino.

    Resposta:

    SELECT

    (SELECT COUNT(*) FROM CLIENTES WHERE sexo=masculino) AS QtdeHomens,

    (SELECT COUNT(*) FROM CLIENTES WHERE sexo=feminino) AS QtdeMulheres

    Comentrio: o interessante desta soluo que podemos exibir resultados, dos mais

    simples aos mais complexos, em uma nica linha. Para isso, basta declarar um SELECT

    principal separando, em seguida, por vrgula, cada subconsulta que gera determinada

    informao.

    Praticando subconsultas

    No dia-a-dia, os desenvolvedores codificam consultas que no dependem diretamente

    de alguma tabela, mas do resultado de uma ou de diversas consultas. Este

    procedimento comumente chamado de subconsulta. Na prtica, o SGBD realiza a

    subconsulta e o resultado serve como parmetro de entrada para a consulta principal.

    Observe os exemplos de 06 a 07.

    Exemplo 06: Obter o nome dos clientes que no possuem telefone.

    Note que para sabermos o nome dos clientes sem telefone, necessrio termos

    certeza de que no existe ocorrncia do cdigo do cliente na tabela FONE. Em

    situaes desse tipo, pode-se utilizar o operador (not) in. Observe:

    SELECT nome

    FROM CLIENTE

    WHERE codigo not in

    (SELECT codigo

    FROM FONE)

    Comentrio: neste caso, o SGBD primeiramente recupera os cdigos dos clientes da

    tabela FONE (SELECT cdigo FROM FONE). Este resultado serve como parmetro de

    entrada para a consulta principal, que recupera apenas os clientes sem telefone

    (clientes cujo cdigo no aparece na subconsulta).

  • Exemplo 07: Obter o nome e o salrio dos clientes que ganham mais que a mdia

    salarial masculina.

    SELECT nome, salario

    FROM CLIENTE

    WHERE salario >

    (SELECT avg(salario)

    FROM CLIENTE

    WHERE SEXO=MASCULINO)

    Comentrio: aqui, o SGBD primeiramente calcula a mdia salarial dos clientes do sexo

    masculino (subconsulta). O resultado comparado com o salrio de cada cliente,

    sendo retornadas apenas as informaes dos que ganham mais que a mdia salarial

    masculina.

    Exemplo 08: Listar o(s) cliente(s) que ganha(m) o maior salrio.

    Resposta:

    SELECT nome

    FROM CLIENTE

    WHERE salario =

    (SELECT max(salario)

    FROM CLIENTE)

    Comentrio: neste caso, o SGBD calcula o maior salrio atravs da utilizao do

    operador max na subconsulta (SELECT max(salrio) from CLIENTE). Este resultado

    comparado com o salrio de cada cliente, sendo exibidos apenas os que ganham o

    correspondente ao maior salrio.

    Exemplo 09: Verificar quantos clientes ganha(m) mais que o(s) cliente(s) de menor

    salrio.

    Resposta:

    SELECT count(*) as QteCliente

    FROM CLIENTE

    WHERE salario >

    (SELECT min(salario)

    FROM CLIENTE)

    Comentrio: aqui, a subconsulta recupera o menor salrio da tabela CLIENTE. Este

    salrio serve como parmetro de comparao para a consulta principal, que contabiliza

    o nmero de clientes que ganham mais que este salrio.

    Exemplo 10: Listar o nome e o sexo do cliente mais novo.

    Resposta:

    SELECT nome, sexo

    FROM CLIENTE

    WHERE nascimento =

    (SELECT max(nascimento)

  • FROM CLIENTE)

    Comentrio: observe que neste caso a subconsulta recupera a maior (mais recente)

    data de nascimento, dentre as cadastradas na tabela CLIENTE. Este resultado serve

    como parmetro de entrada para a consulta principal, que retorna o cliente mais novo

    (podendo ser mais de um cliente).

    Exemplo 11: Listar o nome do cliente mais velho.

    Resposta:

    SELECT nome, sexo

    FROM CLIENTE

    WHERE nascimento =

    (SELECT min(nascimento)

    FROM CLIENTE)

    Comentrio: de forma semelhante ao exemplo 10, a subconsulta recupera a data de

    nascimento mais antiga. Neste caso, o cliente que tiver nascido nesta data, o que

    aparecer no resultado (podendo ser mais de um cliente).

    Concluses

    Estudamos neste tutorial os componentes da estrutura utilizada pelos SGBD para o

    armazenamento dos dados (tabela). Aprendemos que as tabelas so relacionadas

    atravs do mecanismo conhecido por chave estrangeira. Vimos tambm uma sintaxe

    SQL para consulta aos dados armazenados em um banco de dados, consolidando o

    aprendizado atravs de diversos exemplos.

    Espero ter contribudo para seu aprendizado!