Escolar Documentos
Profissional Documentos
Cultura Documentos
BANCO DE DADOS I
Consultas Aninhadas
Sistemas
De
Informação
Consultas Aninhadas
Sistemas
De
Informação Exemplo: Recupere o nome e o
endereço de todos os funcionários
que trabalham no departamento
‘Pesquisa’.
23:36:08 5
Consultas Aninhadas
Sistemas
De
Informação • Consulta:
Consultas Aninhadas
Sistemas
De
Informação • A consulta aninhada seleciona o número do
departamento ‘Pesquisa’;
• A consulta externa seleciona uma tupla de
FUNCIONÁRIO se o DEPARTAMENTO_DNUMERO
está no resultado da consulta aninhada;
• O operador de comparação IN compara um valor v
com um conjunto de valores V, e resulta em TRUE se
v é um dos elementos de V;
• Geralmente podemos ter vários níveis de aninhamento
de consultas;
23:36:08 7
Consultas Aninhadas
Sistemas
De
Informação • A consulta aninhada seleciona o número do
departamento ‘Pesquisa’;
• A consulta externa seleciona uma tupla de
FUNCIONÁRIO se o DEPARTAMENTO_DNUMERO
está no resultado da consulta aninhada;
• O operador de comparação IN compara um valor v
com um conjunto de valores V, e resulta em TRUE se
v é um dos elementos de V;
• Geralmente podemos ter vários níveis de aninhamento
de consultas;
23:36:08 8
Consultas Aninhadas
Sistemas
De
Informação • A consulta aninhada seleciona o número do
departamento ‘Pesquisa’;
• A consulta externa seleciona uma tupla de
FUNCIONÁRIO se o
DEPARTAMENTO_DNUMERO está no resultado
da consulta aninhada;
• O operador de comparação IN compara um valor
v com um conjunto de valores V, e resulta em
TRUE se v é um dos elementos de V;
• Geralmente podemos ter vários níveis de
aninhamento de consultas;
23:36:08 9
Consultas Aninhadas
Sistemas
De
Informação • A consulta aninhada seleciona o número do
departamento ‘Pesquisa’;
• A consulta externa seleciona a tupla de
FUNCIONÁRIO se o DEPARTAMENTO_DNUMERO
está no resultado da consulta aninhada;
• O operador de comparação IN compara um valor v
com um conjunto de valores V, e resulta em TRUE se
v é um dos elementos de V;
• Geralmente podemos ter vários níveis de
aninhamento de consultas;
23:36:08 10
Sistemas
De
Informação
23:36:08 11
FROM FUNCIONARIO AS F
WHERE F.CPF IN
(SELECT FUNCIONARIO_CPF
FROM DEPENDENTE
WHERE FUNCIONARIO_CPF = F.CPF
AND F.PNOME = NOMEDEPENDENTE)
Atributos Correlacionados
23:36:08 14
Sistemas
De
Informação
23:36:08 15
Função EXISTS
Sistemas
De
Informação • EXISTS é usada para verificar se o resultado de
uma consulta aninhada é vazia ou não;
• Podemos reformular o exemplo anterior para
utilizar o EXISTS da seguinte forma:
Função EXISTS
Sistemas
De
Informação
• Exemplo 2: Recuperar o nome dos empregados
que não possuem dependentes.
Função EXISTS
Sistemas
De
Informação Exemplo 3: Relacione os nomes dos
gerentes que possuem ao menos um
dependente;
23:36:08 20
Função EXISTS
Sistemas
De
Informação Exemplo 3: Relacione os nomes dos gerentes
que possuem ao menos um dependente;
SELECT PNOME, UNOME Recupera todas as tuplas de
FROM FUNCIONARIO DEPENDENTE relacionados
WHERE EXISTS (SELECT * à algum FUNCIONARIO
FROM DEPENDENTE
WHERE CPF=FUNCIONARIO_CPF)
Seleciona todas as tuplas de
AND DEPARTAMENTO gerenciadas
EXISTS (SELECT * por algum FUNCIONARIO
Sistemas
De
Informação
Sistemas
De
Informação
Sistemas
De
Informação
Nenhum dependente!!!!!!
SELECT PNOME, UNOME
FROM FUNCIONARIO
WHERE EXISTS (SELECT *
FROM DEPENDENTE
WHERE CPF=FCPF)
AND
EXISTS (SELECT *
FROM DEPARTAMENTO
WHERE CPF=CPF_SUPERVISOR)
23:36:08 24
Sistemas
De
Informação
Sistemas
De
Informação
Resultado
Conjuntos Explícitos
Sistemas
De
Informação • Ao invés de utilizarmos consultas aninhadas,
também podemos fornecer um conjunto de
valores da seguinte maneira.
Junções (Joins)
Sistemas
De
Informação •O conceito de junção foi incorporado na SQL
para que o resultado de uma junção entre duas
tabelas pudesse ser utilizado na cláusula FROM
de uma consulta.
23:36:08 28
Tipos de Joins
Sistemas
De
Informação • CROSS JOINS
• Cria um produto cartesiano entre conjunto de dados
das tabelas;
• Ele não cria relacionamento entre os conjuntos e
retorna cada combinação possível entre as linhas;
• Exemplo:
Tipos de Joins
Sistemas
De
Informação • INNER JOIN (OU JOIN):
• Produz uma única tabela que contém os atributos da
primeira tabela seguidos dos atributos da segunda
tabela;
• Somente a tuplas que satisfazem o critério de junção
farão parte do resultado;
Tipos de Joins
Sistemas
De
Informação • INNER JOIN
Tabelas da
• Consulta:
Junção
Critério da
Junção
23:36:08 31
Tipos de Joins
Sistemas
De
Informação • LEFT OUTER JOIN (T1 LEFT OUTER JOIN T2)
• Produz uma única tabela que contém os atributos da
primeira tabela seguidos dos atributos da segunda
tabela;
Tipos de Joins
Sistemas
De
Informação • LEFT OUTER JOIN
Sistemas
De
Informação
23:36:08 34
Tipos de Joins
Sistemas
De
Informação • LEFT OUTER JOIN
Tipos de Joins
Sistemas
De
Informação • RIGHT OUTER JOIN (T1 RIGHT OUTER JOIN
T2)
Tipos de Joins
Sistemas
De
Informação • FULL OUTER JOIN (T1 FULL OUTER JOIN T2)
Tipos de Joins
Sistemas
De
Informação • NATURAL JOIN
Tipos de Joins
Sistemas
De
Informação
Funções Agregadas
Sistemas
De
Informação • As
funções agregadas transformam um conjunto
de dados (linhas) num único valor;
Funções Agregadas
Sistemas
De • COUNT
Informação
• Retorna a quantidade de tuplas ou valores especificados em
uma consulta
Exemplo: Retornar o número de funcionários
Se não colocarmos o
SELECT COUNT(*)
DISTINCT, então salários
FROM
com valores idênticos
FUNCIONARIO
serão contados novamente
Exemplo: Retornar a quantidade de valores diferentes para salários
da empresa
Funções Agregadas
Sistemas
De • SUM
Informação
•Retorna a soma de um conjunto de valores
Exemplo: Retornar o total da folha salarial da
empresa
Funções Agregadas
Sistemas
De • MIN
Informação
• Retorna o menor valor dentre um conjunto de valores
Exemplo: Retornar o menor salário pago pelo departamento Pesquisa
• AVG
• Retorna a média dentre um conjunto de valores
Exemplo: Retornar a média de salário pago pela empresa
Funções Agregadas
Sistemas
De
Informação • Podemos utilizar funções agregadas em
consultas aninhadas.
GROUP BY e HAVING
Sistemas
De
Informação
• GROUP BY
• Muitas vezes é interessante aplicar funções de agregação em
grupos de tuplas relacionadas. Para estes casos, a SQL fornece
o comando de agrupamento GROUP BY.
GROUP BY e HAVING
Sistemas
De
Informação Exemplo: Para cada departamento, retornar o seu número, o
número de funcionários e a média salarial.
GROUP BY e HAVING
Sistemas
De
Informação • HAVING
GROUP BY e HAVING
Sistemas
De
Informação Exemplo: Para cada projeto com mais de dois funcionários, liste
seu número, seu nome, e o número de empregados que nele
trabalham.
Exemplo - HAVING
Sistemas
De
Informação
Resultado
Final
49
Referências
Sistemas
De
Informação • ELMASRI, R; NAVATHE, S. B. Sistemas de
Bancos de Dados. São Paulo. Addison Wesley,
4ed, 2005.
• Cap. 5 (6 ed)