Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

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;

Mais conteúdos dessa disciplina