Buscar

SQL-Consultas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Prof. Luiz Vivacqua
Projeto de Banco de Dados
Banco de Dados II
Prof. Luiz Antônio Vivacqua C. Meyer
(luiz.vcm@gmail.com)
Prof. Luiz Vivacqua
SQL - CONSULTAS
❑Sintaxe Geral
SELECT [ALL/DISTINCT] coluna1, coluna2, ..., colunaN
FROM nome_tabela1, nome_tabela2, ..., nome_tabelaN
[WHERE predicado]
[GROUP BY coluna1, coluna2, ..., colunaX]
[HAVING predicado]
[ORDER BY coluna1[asc/desc], coluna2[asc/desc], ..., colunaY[asc/desc]];
Prof. Luiz Vivacqua
SQL - CONSULTAS
Peça
Fornecedor
Fornecimento
Prof. Luiz Vivacqua
SQL - CONSULTAS
Recuperação Simples: Obter a identificação de todas as 
peças fornecidas.
Select id_peca
from fornecimento;
Prof. Luiz VivacquaProf. Luiz A. Vivacqua C. Meyer
SQL - CONSULTAS
Recuperação Simples sem ocorrência de duplicatas.
Obter o código dos fornecedores que fornecem peça
Select Distinct id_peca From fornecimento;
Recuperação simples de toda a tabela. Obter todas as 
informações dos fornecedores
Select * From Fornecedor;
Prof. Luiz Vivacqua
SQL - CONSULTAS
Recuperação qualificada: Obter a identificacao dos fornecedores de 
SP com status > 20.
Select codigo, nome 
From fornecedor
Where Cidade =’sp’ and status > 20;
Obs: A condição ou predicado que segue WHERE pode incluir os 
operadores comparativos =, >, <, >=, <=, <> e os operadores lógicos 
AND, OR, NOT.
Recuperação com Ordenação: Obter a identificação e o 
status de fornecedores de SP, na ordem decrescente de status.
Select codigo, Status
From fornecedor Where cidade = ‘sp’
Order by status desc;
Prof. Luiz Vivacqua
SQL - CONSULTAS
CONSULTA COM JUNÇÃO : RECUPERA DADOS DE 
MAIS DE UMA TABELA.
Obter o nome dos fornecedores que fornecem peças.
Select distinct nome
From Fornecedor, Fornecimento
Where Fornecedor.codigo=id_forn;
Junção com condição adicional: Obter o nome do fornecedor 
que fornece a peça P3.
Select distinct nome
From Fornecedor, Fornecimento
Where Fornecedor.codigo=id_forn 
and id_peca=´p3´;
Prof. Luiz Vivacqua
SQL - CONSULTAS
Junção de três tabelas: Obter o nome das peças que são fornecidas 
por fornecedores do RJ
Select Distinct P.nome
From fornecedor S, peca P, fornecimento SP
Where S.codigo = id_forn 
and P.codigo = id_peca 
and S.cidade=´rio´;
Inner Join
Obter o nome dos fornecedores que fornecem peças.
Select distinct nome
From Fornecedor INNER JOIN Fornecimento 
ON fornecedor.codigo = id_forn;
Prof. Luiz Vivacqua
SQL - CONSULTAS
LEFT JOIN
Obter o nome dos fornecedores e 
a qtde fornecida de peças 
inclusive dos que não fazem fornecimento
Select nome, qtde
From Fornecedor LEFT JOIN Fornecimento 
ON fornecedor.codigo = id_forn;
RIGHT JOIN – O inverso do Left join
Obter o nome das peças e o nome dos 
fornecedores na mesma cidade inclusive 
os fornecedores em outras cidades
select P.nome, F.nome 
from peca P RIGHT JOIN fornecedor F 
ON P.cidade=F.cidade
Prof. Luiz Vivacqua
SQL - CONSULTAS
Full Join – Left Join + Right Join
Select P.nome, F.nome, P.cidade, F.cidade 
from peca P FULL JOIN fornecedor F 
ON P.cidade=F.cidade
Prof. Luiz Vivacqua
SQL - CONSULTAS
Funções embutidas
COUNT – retorna o número de linhas na tabela.
SUM – retorna a soma dos valores na coluna que tem que ser 
numérica.
AVG – retorna a média de valores na coluna que tem que ser 
numérica.
MAX – retorna o maior valor na coluna.
MIN – retorna o menor valor na coluna. 
Obter o número total de fornecedores.
Select count(*) From fornecedor;
Prof. Luiz Vivacqua
SQL - CONSULTAS
Obter o número de fornecedores que fornecem peças
Select count(DISTINCT id_forn)
From fornecimento;
Obter o número de fornecimentos para a peça P2.
Select count(*) 
From Fornecimento
Where id_peca = ‘p2’
Prof. Luiz Vivacqua
SQL - CONSULTAS
Obter a quantidade total de peças P2 fornecidas.
Select SUM(Qtde)
From fornecimento
Where id_peca = ‘p2’;
Uso do Group By
A cláusula group by pode ser usada em conjunto com 
funções de forma de agrupar o resultado segundo uma 
ou mais colunas.
Prof. Luiz Vivacqua
SQL - CONSULTAS
Obter a quantidade total de cada peça fornecida.
Select id_peca, SUM(Qtde)
From fornecimento
Group by id_peca;
Uso do having
A cláusula having funciona para os Grupos assim como o
Where para linhas.
Prof. Luiz Vivacqua
SQL - CONSULTAS
Obter a identificação da peça e a soma das quantidades fornecidas 
de todas as peças fornecidas com qtde > 500.
Select id_peca, SUM(Qtde)
From fornecimento
Group by id_peca
Having SUM(Qtde) > 500;
Prof. Luiz Vivacqua
SQL - CONSULTAS
Recuperação com Like
_ vale para qq caracter
% vale para qq sequência de n caracteres onde n pode ser 0.
Negação – Not Like
Obter a identificação e a cor das peças cujos nomes começam 
com a letra “R”.
Select codigo, cor
From Peca
Where nome like ‘r%';
Prof. Luiz Vivacqua
SQL - CONSULTAS
Obter a identificação, peso e cor das peças cujos nomes começam 
com a letra “r”, tem “b” na terceira letra e terminam com “e”.
Select codigo, peso, cor
From Peca
Where nome like ‘r_b%e';
Recuperação com NULL
Usado para testar a presença ou ausência de valores nulos.
Obter a identificação dos fornecedores com status igual a nulo.
Select codigo
From fornecedor
Where status IS NULL;
Prof. Luiz Vivacqua
SQL - CONSULTAS
Recuperação com Subconsulta
❑Subconsulta é uma expressão SELECT FROM WHERE aninhada dentro de 
uma cláusula WHERE ou HAVING. 
❑É executada uma vez antes da execução da consulta externa
Obter os nomes dos fornecedores que fornecem a peça P2.
Select distinct nome
From fornecedor
Where codigo IN (Select id_forn
From fornecimento 
Where id_peca = ‘p2’);
Prof. Luiz Vivacqua
SQL - CONSULTAS
Subconsulta com vários níveis de aninhamentos.
Obter os nomes dos fornecedores que forneçam pelo menos 
uma peça verde.
Select distinct nome
From fornecedor
Where codigo IN (Select id_forn
From fornecimento 
Where id_peca IN (Select codigo
From Peca
where cor = 'verde')); 
Prof. Luiz Vivacqua
SQL - CONSULTAS
Subconsulta c/ operador diferente de IN
Obter a identificação e o nome dos fornecedores localizados na 
mesma cidade que o fornecedor S1
Select codigo, nome
From fornecedor
Where cidade = (Select cidade
From fornecedor
Where codigo = ‘s1’);
Prof. Luiz Vivacqua
SQL - CONSULTAS
Função numa subconsulta
Obter o nome e a cidade dos fornecedores cujo status seja inferior 
ao maior status existente.
Select nome, cidade
From fornecedor
Where status < (Select MAX(status)
From fornecedor);
Prof. Luiz Vivacqua
SQL - CONSULTAS
Subconsulta correlacionada:
❑Uma subconsulta correlacionada referencia uma ou mais colunas
na instrução SQL externa.
❑Usado quando se precisa de uma resposta para uma pergunta que
depende de um valor em cada linha contida em uma consulta 
externa
❑É executada uma vez para cada linha na consulta externa
❑O operador EXISTS verifica a existência de linhas retornadas por uma 
Subconsulta. Embora possa ser usado em subconsultas não correlacionadas,
geralmente é usado neste tipo de subconsulta.
Prof. Luiz Vivacqua
SQL - CONSULTAS
Obter o nome dos fornecedores que fizeram fornecimento
Select codigo, nome from fornecedor T1
Where EXISTS (select 1
from fornecimento T2
where T2.id_forn = T1.codigo);
Obs: Como EXISTS apenas verifica
A existência de linhas retornadas pela 
subconsulta, uma subconsulta não 
precisa retornar uma coluna, ela pode
retornar um valor literal, melhorando
o desempenho
Prof. Luiz Vivacqua
SQL - CONSULTAS
Obter o nome dos fornecedores que não fizeram fornecimento
select nome from fornecedor T1
where NOT EXISTS (select 1 
FROM fornecimento T2
where T1.codigo = T2.id_forn)
Forma negativa:
Prof. Luiz Vivacqua
SQL - CONSULTAS
Dicas:
❑ Normalmente, EXISTS oferece um desempenho melhor 
do que IN em subconsultas.
❑Quando uma lista de valores contem um valor nulo, NOT EXISTS
retorna verdadeiro, mas NOT IN retorna falso
Exemplo:
Insert into fornecimento values(13, null, ‘p1’,300)
Select nome from fornecedor T1where NOT EXISTS (select 1 
FROM fornecimento T2
where T1.codigo = T2.id_forn)
Select nome from fornecedor
where codigo NOT IN (select id_forn 
FROM fornecimento)
Prof. Luiz Vivacqua
SQL - CONSULTAS
select nome from fornecedor where cidade NOT IN('sp');
select nome from fornecedor where cidade NOT IN('sp‘, null);
Prof. Luiz Vivacqua
SQL - CONSULTAS
Operadores de conjunto
Combinam os resultados das consultas que devem ter o mesmo 
número de colunas com o mesmo tipo de dados.
Union
É o operador de união da teoria de conjuntos tradicionais. O resultado 
é a união dos resultados da cada consulta. As duplicidades são 
sempre eliminadas.
Obter a identificação das peças que pesam mais de 15 ou 
que são fornecidas por S2.
Select codigo
From Peca
Where peso > 15
UNION
Select id_peca
From fornecimento
Where id_forn = ‘S2’;
Prof. Luiz Vivacqua
SQL - CONSULTAS
Consulta com Intersect
É o operador de interseção de conjuntos. O resultado é a interseção 
dos resultados da cada consulta.
Obter as cidades onde existam fornecedores e peças.
Select cidade
From fornecedor
INTERSECT
Select cidade
From Peca;
Prof. Luiz Vivacqua
SQL - CONSULTAS
Consulta com EXCEPT
É o operador de subtração de conjuntos. O resultado apresenta as 
linhas da primeira consulta que não estão na segunda consulta.
Obter as cidades onde existam fornecedores e que não existam peças.
Select cidade
From fornecedor
EXCEPT
Select cidade
From Peca;
Prof. Luiz Vivacqua
SQL - CONSULTAS
Usando a expressão CASE
Similar ao IF...THEN...ELSE de outras linguagens
CASE WHEN CONDIÇÃO THEN RESULTADO
[WHEN ...]
[ELSE RESULT]
END
CONDIÇÃO é uma expressão que retorna um boleano
Se a cláusula ELSE for omitida e nenhuma condição for verdade
o resultado é NULO.
Prof. Luiz Vivacqua
SQL - CONSULTAS
EXEMPLOS:
Select codigo,status,
Case Status
WHEN 10 Then 'OTIMO'
WHEN 20 Then 'BOM'
WHEN 30 Then 'REGULAR'
ELSE 'RUIM'
End
From Fornecedor;
Expressão CASE pesquisada
Select codigo, status,
Case
WHEN status=10 THEN ‘ÓTIMO’
WHEN status=20 THEN ‘BOM’
WHEN status=30 THEN ‘REGULAR’
ELSE ‘RUIM’
End
From Fornecedor;

Continue navegando

Outros materiais