0% acharam este documento útil (0 voto)
12 visualizações25 páginas

4 DQL Select

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
12 visualizações25 páginas

4 DQL Select

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 25

Banco de

Dados II
PROF.: DOUGLAS LEGRAMANTE
Ordenação dos Dados
Selecionados
QUANDO SE REALIZA UMA SELEÇÃO, OS DADOS RECUPERADOS
NÃO ESTÃO ORDENADOS. OS DADOS SÃO RECUPERADOS PELA
ORDEM EM QUE SE ENCONTRAM DISPOSTOS FISICAMENTE NA
TABELA DO SGBD.
Ordenação dos Dados Selecionados
A SQL prevê a cláusula ORDER BY para O <número da coluna> se
realizar a ordenação dos dados refere à posição relativa das
colunas quando for
selecionados. apresentado o resultado da
consulta, e não à posição na
Sintaxe básica: tabela original, contada da
esquerda para a direita. As
palavras ASC e DESC
SELECT <nome da(s) coluna(s)> FROM <tabela> significam, respectivamente,
WHERE <condição(ões)> > ascendente e descendente. A
ORDER BY <nome da(s) coluna(s)> [ASC/DESC] forma ascendente de
ou ordenação é assumida como
ORDER BY <número da coluna> padrão.
Exemplo
Problema: mostrar em ordem alfabética a lista de vendedores e seus respectivos salários
fixos.
Diagrama:

Sintaxe:
SELECT nome_vendedor, salario_fixo FROM vendedores
ORDER BY nome_vendedor;
Exemplo
Problema: listar nomes, cidades e estados de todos os clientes, ordenados por
estado e cidade de forma descendente.

Diagrama:

Sintaxe:
SELECT nome_cliente, cidade, UF FROM cliente
ORDER BY UF DESC, cidade DESC;
Exemplo
Problema: mostrar a descrição e o valor unitário de todos os produtos que tenham a
unidade ‘M’, em ordem de valor unitário ascendente.

Diagrama:

Sintaxe:
SELECT descricao_produto, valor_unitario
FROM produto
WHERE unidade_produto = ‘M’
ORDER BY 2 ASC;
Realização de Cálculos
com Informação
Selecionada
CO M A L IN G UAG E M S Q L É P O S S Í V E L C R IA R U M CA M P O QU E N ÃO
P E RT E N ÇA À TA B E L A O R I G I N A L E S E JA F R UTO D E CÁ LC U LO D E A LG UN S
CA M P O S DA TA B E L A PA R A S E R E X I B I D O N O M O M E N TO DA CO N S U LTA .
Exemplo
Problema: mostrar o novo salário fixo dos vendedores, de faixa de comissão ‘C’,
calculado com base no reajuste de 75% acrescido de R$ 120,00 de bonificação.
Ordenar pelo nome do vendedor.

Diagrama:

Sintaxe:
SELECT nome_vendedor, novo_salario
= (salario_fixo * 1.75) + 120
FROM vendedores
WHERE faixa_de_comissao = ‘C’
ORDER BY nome_vendedor;
Utilização de Funções
de Agregação sobre
Conjuntos
A S FUN ÇÕ ES DE AG RE G AÇÃO R ES U LTAM SE MP R E U MA NOVA
CO LU N A N O R E S U LTA DO DA P E S Q U IS A .
FUNÇÃO DESCRIÇÃO Funções de
COUNT Devolve o número de linhas. Agregação
MAX Devolve o Maior valor da
coluna. Estas funções, também conhecidas como
Funções Estatísticas, têm por objetivo
MIN Devolve o Menor valor da obter informação sobre conjuntos de
coluna. linhas especificados na cláusula WHERE ou
sobre grupos de linhas indicados na
SUM Devolve a Soma de todos os
cláusula GROUP BY.
valores da coluna.

AVG Devolve a Média (AVeraGe) de


todos os valores da coluna.
Contagem
dos Registros Forma DESCRIÇÃO

(COUNT) COUNT(*) Devolve o número de linhas


que resulta de um SELECT.
A função de agregação
COUNT devolve o número COUNT(Coluna) Devolve o número de
de linhas que resultam de ocorrências na coluna
um SELECT. Pode ser diferentes de NULL.
utilizada de três formas
distintas: COUNT(DISTINCT Devolve o número de
Coluna) ocorrências (sem repetições)
na coluna.
Exemplo
Problema: quantos vendedores ganham acima de R$ 2.500,00 de salário fixo?
Diagrama:
O comando COUNT,
quando utilizado sem a
cláusula WHERE, realiza
a contagem das linhas
da tabela.
Sintaxe:
SELECT COUNT(*), FROM vendedores
WHERE salario_fixo >2500;
Busca de Máximos e Mínimos (MAX, MIN)
As funções de agregação MIN e MAX permitem obter o menor e o maior
valor de uma determinada coluna.
Problema: mostrar o menor e o maior salários da tabela vendedores.
Diagrama:
As funções Min e Max
podem ser aplicadas a
colunas do tipo string.
Neste caso, são devolvidos
Sintaxe: o Menor e Maior valores
SELECT MIN(salario_fixo), MAX(salario_fixo) usando uma comparação
FROM vendedores; alfabética.
Totalização dos Valores de Colunas (SUM)
A função SUM devolve a soma de uma determinada coluna.
Problema: mostrar a quantidade total pedida para o produto ‘VINHO’ de código ‘78’
na tabela item_de_pedido.
Diagrama:

SUM(quantidade)
Sintaxe:
SELECT SUM(quantidade), FROM item_de_pedido
WHERE codigo_produto = ‘78’;
Cálculo de Médias (AVG)
A função AVG devolve a média dos valores de uma determinada coluna.
Problema: qual é a média dos salários fixos dos vendedores?
Diagrama:

Sintaxe:
SELECT AVG(salario_fixo),
FROM vendedores;
Utilização da
Cláusula DISTINCT
N O R MA L M E N T E , VÁ R I O S R E G I ST R O S D E N T R O D E U MA TA B E L A P O D E M
CO N T E R OS M E S M O S VA LOR E S , CO M E XC E ÇÃO DA C H AV E P R IM Á R IA .
CO M I S SO, M U I TA S CON S U LTA S P O D E M TR A ZE R I N F OR M AÇÕE S
E R R A DA S .
Cláusula DISTINCT
A cláusula DISTINCT, aplicada em uma consulta, foi criada para não permitir que
certas redundâncias, obviamente necessárias, causem problemas. A cláusula
DISTINCT elimina repetições de valores em relação a uma coluna.

Problema: quais são as unidades de produtos, diferentes, na tabela produto?


Diagrama:

Sintaxe:
SELECT DISTINCT unidade_produto, FROM produto;
Agrupamento de
Informações
Agrupamento de Informações
Selecionadas (GROUP BY e HAVING)
A cláusula GROUP BY divide o resultado de um SELECT em um grupo de resultados
que serão processados pelas funções de agregação.

A cláusula HAVING realiza as restrições das linhas resultantes, da mesma forma que a
cláusula WHERE o faz em um SELECT.

As cláusulas GROUP BY e HAVING fazem parte do comando SELECT e aparecem na


seguinte ordem:
SELECT <nome da(s) coluna(s)> FROM <tabela>
WHERE <condição(ões)>
GROUP BY <nome da(s) coluna(s)>
HAVING <condição(ões)>
ORDER BY <nome da(s) coluna(s)>;
CLÁUSULA GROUP BY
Características da utilização da cláusula GROUP BY:
❑ A cláusula GROUP BY é utilizada para agrupar as informações.
❑ Os registros são processados em grupos de características semelhantes.
❑ As funções de Agregação (Count, Max, Min, etc.) podem ser utilizadas para
obter informação sobre cada um dos grupos.

A cláusula GROUP BY pode ser utilizada em conjunto com qualquer


outra cláusula que já estudamos até este ponto.
Exemplo
Problema: listar o número de produtos que cada pedido contém.
Diagrama: A função de agregação
COUNT(*), se utilizada em
conjunto com a cláusula
GROUP BY, devolve a
quantidade de ocorrências
(linhas) dentro de cada grupo.
Sintaxe:
SELECT numero_pedido, total_produtos = COUNT(*)
FROM item_de_pedido
GROUP BY numero_pedido;
Explicação
Inicialmente, os registros são ordenados de forma ascendente por
número do pedido.
Em um segundo passo, é aplicada a operação COUNT(*) para cada
grupo de registros que tenha o mesmo número de pedido.
Após a operação de contagem de cada grupo, o resultado da consulta
utilizando a cláusula GROUP BY é apresentado.
CLÁUSULA HAVING
A cláusula HAVING serve para fazer restrições ao nível dos grupos que são
processados.
Problema: listar os pedidos que têm mais de três produtos.
Diagrama: Sintaxe:
SELECT numero_pedido,
total_produtos = COUNT(*)
FROM item_de_pedido
GROUP BY numero_pedido;
HAVING COUNT(*) >3;
A cláusula HAVING atua sobre o resultado dos grupos.
WHERE VS. HAVING
Quando utilizar a cláusula WHERE ou a cláusula HAVING para restringir o conjunto de
registros a serem apresentados?
❑ Utiliza-se a cláusula WHERE sempre que se pretende restringir os registros a serem
considerados na seleção. A cláusula HAVING serve para restringir os grupos que foram
formados depois de aplicada a restrição da cláusula WHERE.
❑ A cláusula WHERE só pode ser aplicada a registros individuais, enquanto a cláusula
HAVING só pode ser aplicada a funções de grupo.

Se utilizar a cláusula WHERE em um SELECT contendo GROUP BY, o conjunto dos


registros agrupados é apenas aquele que resulta da restrição imposta pela cláusula
WHERE.
Referências
Capitulo 13 do livro: Banco de Dados – projeto e implementação
Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536532707/
Capitulo 10 do livro: Banco de Dados: teoria e desenvolvimento
Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788536533759/
A partir da pág. 129 do livro: SQL - Structured Query Language
Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788521632450/

Você também pode gostar