Você está na página 1de 23

Fundamentos de Banco de Dados

2013/1
Aula 17
Prof. Pablo Ariel do Prado Lpez

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Agenda
Avanando em SQL
Select Into
Group By
Order By
Having

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
SELECT INTO
A instruo SELECT INTO cria uma tabela e a popula
com o conjunto de resultados da instruo SELECT.
Pode ser usada para combinar dados de vrias
tabelas ou exibies em uma nica tabela.
A estrutura da nova tabela definida pelos atributos
das expresses na lista de seleo.
O comando tambm pode ser til para a criao de
backups de tabelas importantes dentro de um
sistema.
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Exemplo:
Suponha a existncia de uma tabela empregados com a
seguinte estrutura:
create table empregados
(
codEmpregado int not null identity (1,1),
nome varchar(50),
cargo varchar (20),
codChefe int,
primary key (codEmpregado)
)
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
A partir da tabela empregados, queremos separar os cargos
em uma tabela separada, para poder cadastrar novos cargos
sem ter a necessidade de ter que cadastrar um funcionrio.
Utilizaremos a seguinte sintaxe:

SELECT DISTINCT cargo INTO Cargos


FROM Empregados
ORDER BY cargo

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
GROUP BY

Clusula utilizada em conjunto


com as funes de agregao
para agrupar sua consulta
(ResultSet) por uma ou mais
colunas.
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Deve ser utilizado sempre que
queremos utilizar uma funo
de agregao para trazer um
valor, com alguma outra
coluna onde no efetuamos
nenhuma operao.
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Exemplo:
SELECT CodProduto, COUNT(*) AS Total
FROM ItemVenda
GROUP BY CodProduto

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Exemplo:
SELECT Nome, SUM(Quantidade) AS Estoque'
FROM Produtos
GROUP BY Nome

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Utilizando as tabelas criadas na aula
anterior, realize uma consulta que
liste o nome do programador, o
nmero de linguagens que ele
conhece e o nome da empresa,
agrupando pelo seu nome e pela
empresa que trabalha
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
HAVING
Especifica um critrio de pesquisa para um
grupo ou um agregado.
Geralmente usada com a clusula GROUP BY.
diferente do WHERE, visto que este restringe
os resultados obtidos sempre aps o uso da
clusula
FROM,
ao
passo
que
a
clusula HAVING filtra o retorno do
agrupamento.
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
WHERE
serve
para
filtros
condicionais (onde isto igual a
aquilo, etc).
HAVING somente pode ser utilizado
com o GROUP BY, e serve para filtros
onde o WHERE no pode ser
utilizado, como por exemplo funes
agregadas.
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Exemplo:
SELECT coluna_1, sum(coluna_2)
FROM tabela
WHERE coluna_1 = %exemplo%
GROUP BY coluna_1
HAVING sum(coluna_2) > 100
Ou seja, o HAVING pode fazer um filtro
no resultado da soma (funo agregada).
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Exemplo:
SELECT CodProduto, COUNT(*) AS Total
FROM ItemVenda
GROUP BY CodProduto
HAVING (COUNT(*) > 50)

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Exemplo:
SELECT Nome, SUM(Quantidade) AS 'Estoque'
FROM Produtos
GROUP BY Nome
HAVING SUM(Quantidade) > 200

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
ORDER BY
A clusula ORDER BY classifica os resultados da
consulta por uma ou mais colunas
A clusula ORDER BY no vlida em vises,
procedimentos armazenados e subconsultas, a
menos que TOP tambm seja especificada.
O padro ordem crescente (ASC).
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Avanando em SQL
Exemplo:
SELECT CodProduto, Nome, PrecoUnitario
FROM Produto
ORDER BY PrecoUnitario [DESC/ASC]

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Exerccios
VIEWS:
Considerando a tabela programador
listada anteriormente, crie uma
viso
que
liste
todos
os
programadores, e depois consulte a
mesma incluindo algum critrio de
filtro.
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Exerccios
SELECT INTO:
Realize uma consulta para criar uma
tabela de backup da tabela de
programadores.
Considerando a tabela Aluno criada
na aula anterior, crie uma tabela de
contatos, utilizando os atributos
apropriados.
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Exerccios
GROUP BY:
Utilizando
a
tabela
de
programadores e linguagens como
base, realize a contagem total de
programadores e agrupe por
linguagem,
apresentando
a
linguagem
e
o
total
de
programadores de cada linguagem.
Fundamentos de Banco de Dados - 2013/1

11/06/2013

Exerccios
HAVING:
Considerando o exerccio anterior,
inclua um critrio para que sejam
apresentadas as linguagens que
possuem no mnimo 1 programador.

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Exerccios
ORDER BY:
Consulte as Views criadas e ordeneas por nome e linguagens que os
mesmos programam. Faa as
alteraes na View que julgar
necessrias para atender o critrio.

Fundamentos de Banco de Dados - 2013/1

11/06/2013

Obrigado!

Perguntas?
Dvidas?

Fundamentos de Banco de Dados - 2013/1

11/06/2013