Notas de aula e exercícios de Banco de Dados II

Propaganda
Tecnologia em Análise e Desenvolvimento de Sistemas
Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados
Memória de aula – Aulas 11 e 12
1) Revisão
a. Cláusula join (inner e outer)
2) Cláusula GROUP BY
a. Usada para agrupar dados por valores de colunas
b. Ao usar group by será necessário usar cláusulas/funções de
filtro de dados, como a função COUNT.
i. Função MIN(x): retorna o menor valor de um atributo x.
ii. Função MAX(x): retorna o maior valor de um atributo x.
iii. Função SUM(x): retorna a soma dos valores do atributo x.
iv. Função AVG(x): retorna a média dos valores do atributo x.
v. Função COUNT(*): “conta o total de linhas” que
preenchem a qualificação de consulta.
vi. Exemplo:
select faixaef as Faixa, count(*) as
Qtd
from eficiencia_energ
group by faixaef
Faixa
Qtd
A
5
B
14
Página 1 de 7
C
2
D
18
E
4
c. Também pode ser utilizada a cláusula HAVING
i. Permite filtrar dados agrupados da mesma forma que a
cláusula WHERE permite filtrar dados brutos
ii. Exemplo:
select faixaef as Faixa, count(*) as
Qtd from eficiencia_energ
group by faixaef
having count(*) > 4
Faixa
Qtd
A
5
B
14
D
18
3) Subconsultas (subqueries): são consultas aninhadas (dentro de
outras consultas).
SELECT colunas
FROM tabela
WHERE expressão operador (SELECT colunas FROM tabela
WHERE ...)
a. O operador pode ser de comparação (linha - >,<,<=,>=,<>,!=,=)
ou de grupo (in, any, all). Os operadores de linha só
Página 2 de 7
funcionam se a subconsulta retornar apenas um valor (uma
linha e uma coluna).
Select nome,preco
From cd
Where preco > (select avg(preco) from cd)
b. Para realizar subconsultas:
i. Escreva-as entre parênteses
ii. Escreva-as à direita do operador
iii. Não coloque a cláusula ORDER BY em uma subquery
iv. Utilize operadores de linha apenas em buscas que
retornem uma única linha.
v. Utilize operadores de grupo apenas em buscas que
potencialmente retornem mais de uma linha.
c. Uma subconsulta também pode ser usada na cláusula
HAVING.
Select cd_gravadora,min(preco)
From cd
Group by cd_gravadora
Having min(preco) > (select preco from cd where codigo=6)
d. IN: verifica a pertinência em um conjunto
Select codigo, nome, preco
Where preco in (select min(preco) from cd
group by cd_gravadora)
e. ANY: permite comparar operadores de comparação de linha
com um grupo de linhas. Retorna verdadeiro se a comparação
com QUALQUER um dos valores da subconsulta for
verdadeira)
Select codigo,nome,preco
From cd
Página 3 de 7
Where
preco
<
ANY
(select
preco
from
cd
where
cd_gravadora = 2)
f. ALL: permite comparar operadores de comparação de linha
com um grupo de linhas. Retorna verdadeiro se a comparação
com TODOS os valores da subconsulta for verdadeira)
Select codigo,nome,preco
From cd
Where
preco
<
ALL
(select
preco
from
cd
where
cd_gravadora = 2)
4) Trabalhando com conjuntos – União, intersecção e diferença
a. União de duas consultas (lembre-se das regras da álgebra
relacional, continuam valendo)
i. Expressa pela cláusula UNION e UNION ALL
select 1 num, 'abc' string
union
select 2 num, 'xyz' stri
num
string
1
abc
2
xyz
ii. A diferença entre UNION e UNION ALL é que a primeira
remove as duplicatas, a segunda não.
iii. O número de linhas do conjunto resultado de um
UNION ALL é a soma do número de linhas dos
conjuntos que estão sendo combinados.
b. Para intersecção e diferença há no padrão ANSII a cláusula
INTERSECT, mas só funcionará a partir do SQL Server 2008.
Página 4 de 7
Todavia, a intersecção, assim como a diferença (EXCEPT
DISTINCT), podem ser realizadas por meio das cláusulas
EXISTS ou NOT EXISTS.
i. Exemplo de intersecção
SELECT DISTINCT cidade FROM autor
WHERE EXISTS (SELECT * FROM editora
WHERE
autor.cidade
=
editora.cidade)
ii. Exemplos de diferença
SELECT DISTINCT cidade FROM autor
WHERE NOT EXISTS(SELECT * FROM editora
WHERE
autor.cidade
=
editora.cidade)
5) View (Visão)
a. Consulta armazenada no banco de dados, parece com uma
tabela. Pode ser utilizada para fazer consultas como se fosse
uma tabela.
Ex.:
Create view v_empregados as
Select
e.cod_emp,
e.nome,
e.sobrenome,
YEAR(e.dt_contr) dt_contr
From empregados as e
Bibliografia
ELMASRI, R., NAVATHE, S.B. Sistemas de Banco de Dados. 4ª Ed. São Paulo: Pearson
Makron Books, 2005.
Página 5 de 7
EXERCÍCIO
Baseando-se no Modelo de Dados implementado em laboratório, efetue as consultas abaixo.
1) Antes de fazer os demais quesitos, inclua mais dez linhas na sua tabela de imóveis,
varie o bairro, a cidade e o vendedor, além dos demais campos.
2) Verifique a maior, a menor e o valor médio das ofertas da tabela.
3) Verifique a média do preço de venda dos imóveis localizados no bairro Flamengo, na
cidade do Rio de Janeiro.
4) Refaça o exercício anterior mostrando o resultado em formato decimal com apenas
duas casas decimais.
5) Mostre o maior, o menor, o total e a média de preço de venda dos imóveis.
6) Modifique o comando anterior para que sejam mostrados os mesmos índices por
bairro.
7) Faça uma busca que retorne o total de imóveis por vendedor. Apresente em ordem
total de imóveis.
8) Mostre o código do vendedor e o menor preço de imóvel dele no cadastro. Exclua da
busca os valores de imóveis inferiores a 10mil.
9) Faça o mesmo que no quesito anterior, mas ao invés de mostrar o código do vendedor,
mostre o seu nome.
10) Faça uma busca que retorne o total de imóveis à venda por bairro (mostre o nome do
bairro). Exclua da busca bairros cujos total de imóveis à venda seja igual a 1.
11) Mostre o código do comprador e a média do valor das ofertas e o número de ofertas
deste computador.
12) Faça uma busca que retorne o total de ofertas realizadas pelo comprador 1.
13) Faça uma lista de imóveis do mesmo bairro do imóvel 2. Exclua o imóvel 2 da sua
busca.
14) Faça uma lista que mostre todos os imóveis que custam mais que a média de preço
dos imóveis.
15) Faça uma lista com todos os compradores que tenham ofertas cadastradas com valor
superior a 70 mil.
16) Faça uma lista com todos os imóveis com oferta superior à média do valor das ofertas.
17) Faça uma lista com todos os imóveis com preço superior à média de preço dos imóveis
do mesmo bairro.
18) Faça uma lista dos imóveis com maior preço agrupado por bairro, cujo maior preço
seja superior à média de preços dos imóveis.
19) Faça uma lista com as ofertas menores que todas as ofertas do comprador 2, exceto as
ofertas do próprio comprador.
20) Faça uma lista com todos os códigos e nomes de compradores e códigos e nomes de
vendedores.
21) Faça uma lista com todos os códigos e nomes de compradores e códigos e nomes de
vendedores, e admita que não há repetição das linhas.
22) Faça uma lista com todos os compradores que não tenham ofertas cadastradas.
23) Faça uma lista de todos os vendedores que não tenham imóveis cadastrados.
24) Faça uma lista de todos os vendedores que tenham imóveis cadastrados.
Página 6 de 7
25) Faça uma lista com todos os compradores que tenham ofertas cadastradas.
Baseado em: OLIVEIRA, C. H. P. SQL curso prático. Novatec, 2002.
Página 7 de 7
Download