Você está na página 1de 15

Banco de Dados I

Rogério Güths
Aula 22
SQL
Select
SELECT (campos) FROM (tabelas)
WHERE (perguntas)
Perguntas
campo = campo
campo > valor
SQL
Select
SELECT (campos) FROM (tabelas)
WHERE (perguntas)
Perguntas
campo = campo
campo > campo
Exemplos
– Select * From Cliente
– Select * From Cliente, Municipio

– Select * From Cliente, Municipio


where Cliente.codigoMunicipio = Municipio.codigoMunicipio
SQL
Contar e Somar

Select * From Cliente


Exercício
– Popule o BD
Select count(*) From Cliente


10 Clientes Select sum(valorTotal) From Venda

3 Municipios
Gere os relatórios

5 Produtos (2 Generos – comida, - Clientes de Corumbá
bebida) - Produtos do genero comida

4 compras com 3 itens cada uma - Quantidade de Clientes de Corumbá
- Produtos que tiveram alguma venda
– Gere os relatórios: - Bebidas que tiveram alguma venda
- Clientes que fizeram alguma compra

Clientes de Corumbá com a data da compra

Produtos do genero bebida - Quantas vendas foram feitas para
clientes de Ladário
Cálculos e funções usuais.htm - Valor total das compras de clientes

Criar BD CREATE DATABASE alunos

Apagar BD DROP DATABASE alunos SQL

Importar BDAlunos

Comando
– UPDATE `alunos` SET `TELEFONE`=123456 WHERE NOT( `TELEFONE`=0 )
– UPDATE........ SET Lucro = Preco-Custo WHERE....

Exercícios
– Contar quantos - Alunos do campus CARAZINHO - GRADUAÇÃO
– Alunos de Cultura Religiosa no campus Carazinho

– Alunos entre 30 e 40 anos

– Alunos entre 30 e 40 anos aprovados


– Alunos entre 30 e 40 anos reprovados, reprovados por falta, ou cancelados

– Média de idade dos alunos


– … percentual de aprovação dos alunos de Sistemas de Carazinho... será que dá

SELECT COUNT(*) FROM `alunos` WHERE (CAMPUS LIKE 'CARAZ%')

SELECT COUNT(*) FROM `alunos` WHERE (CAMPUS LIKE 'CARAZ%') AND (`SITUAÇÃO`='AP')
SELECT (campos) FROM (tabelas) WHERE (perguntas) SQL
ORDER BY campo1, campo2, ... ASC|DESC;

Gera saída ordenada de forma ascendente/descendente pelos campos


SELECT * FROM `alunos` WHERE (CAMPUS LIKE 'CARAZ%') ORDER BY curso, disciplina
vai listar todos alunos de Carazinho ordenado por curso e disciplina de forma ascendente (default)

Obs: a forma ASC/DESC pode ser aplicada separadamente em cada campo.

SELECT (campos) FROM (tabelas) WHERE (perguntas)

GROUP BY campo1, campo2, … ;

Gera saída sumarizada (totalizada) pelos campos


Geralmente funciona associada a comandos COUNT(*), SUM(...), AVG(...), MAX(...), MIN(...), que
agrupam ocorrências
SELECT campus, curso, COUNT(*) FROM `alunos` WHERE (SITUACAO LIKE 'AP') GROUP BY campus, curso
vai apresentar as quantidades de alunos aprovados agrupados por campus e curso
SQL

Comandos Inner Join e Left Join
– Where (tbdados.id = veiculo.id_dados)

Importar BDAlunos
Exercícios

Obtenha os seguintes relatórios

Veiculos da Empresa X
– Pontos de Referencia da Empresa X
– Posicoes do Veiculo Y
– Posicoes dos Veiculos da Empresa X
– Veiculos, Posicoes e Velocidades dos Veiculos da Empresa X com velocidade acima de 80
– Posições e Velocidades dos Veiculos da Empresa X com velocidade acima de 80 no mês
de junho de 2010
Exercício
Atualize a tabela ListaItem, no campo valorTotalItem,
conforme o produto, quantidade e seu valor unitário
Liste as vendas, sua data e seus valores totais calculados
a partir dos valorTotalItem

-
UPDATE listaitem, produto SET listaitem.valorTotalItem = listaitem.quantidade*produto.valorUnitario
WHERE listaitem.codigoProduto = produto.codigoProduto
-
SELECT * FROM `venda`, listaitem
WHERE venda.codigoVenda = listaitem.codigoVenda
-
SELECT dataHora, venda.codigoVenda, sum(listaitem.valorTotalItem) FROM `venda`, listaitem
WHERE venda.codigoVenda = listaitem.codigoVenda
GROUP BY venda.codigoVenda
-
SQL para data e hora:
Datediff(venda.dataHora, curdate()) <7
– NOW() ← indica dataHora atual; CURDATE() ← data atual
– Datediff(NOW(),dataHora) ← diferença de data em dias (não absoluta)

-
Clientes de Corumbá que mais compraram neste mês.
-
SELECT dataHora, venda.codigoVenda, sum(listaitem.valorTotalIt
-
Vendas por dia WHERE venda.codigoVenda = listaitem.codigoVenda and Dated
- GROUP BY codigoVenda
-
Genero que mais vendeu (em quantidade de produto)
-
SELECT dataHora, sum(listaitem.valorTotalItem) FROM `venda`, l
-
Produtos e o lucro gerado, ordenados pelo lucro WHERE venda.codigoVenda = listaitem.codigoVenda
(precisa GROUP BY descricao) GROUP BY venda.dataHora
-
Genero com maior lucratividade (lucro/total de vendas)
-
-
SELECT genero.descricao, sum((produto.valorUnitario-produto.c
-
3 Produtos mais vendidos para clientes de Corumbá FROM genero, produto, listaitem
-
Gênero que teve mais vendas (que mais apareceu nas WHERE listaitem.codigoProduto = produto.codigoProduto AND p
vendas) para clientes de Corumbá genero.codigoGenero
GROUP BY genero.descricao
ORDER BY sum((produto.valorUnitario-produto.custoUnitario)/p
-

-
3 Produtos mais vendidos para clientes de Corumbá
-
Gênero mais vendido para clientes de Corumbá
Exercício

Criar os relatórios:

Quantidade de vendas neste mês
– SELECT count(*) from Venda Clientes de Corumbá que mais compraram neste mês
-

Genero que mais vendeu


Valor total de vendas neste mês
-

-
Genero com maior lucratividade (lucro/total)
– SELECT sum(valorTotal)/100 from Venda -
3 Produtos mais vendidos para clientes de Corumbá

Ordenar Clientes que mais compraram -neste mês.
Gênero mais vendido para clientes de Corumbá

Ordenar Produtos mais vendidos neste mês
– SELECT Produto.descricao, sum(ListaItem.quantidade) from ListaItem, Produto
where (ListaItem.codigoProduto = Produto.codigoProduto)
group by Produto.codigoProduto order by sum(ListaItem.quantidade)

3 Produtos que mais geraram lucro neste mês
– …. Limit 1,3

Ordenar Produtos que geraram maior lucro neste mês
SELECT Produto.descricao, sum(ListaItem.quantidade*(Produto.valorUnitario-Produto.custoUnitario) as lucro from
ListaItem, Produto
where (ListaItem.codigoProduto = Produto.codigoProduto)
group by Produto.codigoProduto order by lucro

Contatos de Corumbá que tiveram Beneficio no ano de 2010

Contatos de Corumbá que tem Promessa feita

Contatos de Corumbá que tem Demanda e que tiveram beneficio no ano 2010

Agenda para mês de junho de 2011

Agenda e valor do beneficio para mês de junho de 2011 com Contatos que tiveram Beneficio

Contatos e Município onde residem, que tiveram Benefício superior a 1000

Contatos, valor do benefício e data que tiveram Benefício e tiveram reunião na Agenda

Contato, descrição e assunto tratado nas reuniões de 2010 em Corumbá

Demandas com situação “Em Aberto” de Corumbá

Promessas com situação “Resolvida” de Corumbá

Contato, valor e data dos Benefícios obtidos para a região do Pantanal
Inner Join

select *
from tbdados, veiculo
where (tbdados.id = veiculo.id)


select *
from tbdados inner join veiculo using (id)


select *
from veiculo inner join empresa using (emp_cod)


select *
from tbdados inner join veiculo
on (tbdados.id = veiculo.id_dados)
Strings

LIKE
– Select nome From cliente
Where nome LIKE 'LA%'
Where nome LIKE '%LA'
Where nome LIKE '%LA%'
Where nome LIKE '_A%'
Where nome LIKE '_A%'
Where nome LIKE '_A%'

Valores dististintos
– SELECT DISTINCT codigoProduto FROM `listaitem`
Update

UPDATE tb_cliente
– SET cidade='Belo Horizonte', UF='MG’
– Where codigo=3

update alunos set `Idade` = `Idade`+100 where
(`Idade` != 0)

Você também pode gostar