Buscar

BD_Teoria_Aula11

Prévia do material em texto

BANCO DE DADOS
AULA 11
= ÁLGEBRA RELACIONAL =
Prof. Ivi Alex Franco Silva
E-mail: ivi.alex@puc-campinas.edu.br
9. Álgebra Relacional: Definição
DEFINIÇÃO:
Linguagem de consulta 
procedural e formal. 
Consiste em um 
conjunto de operações 
que têm como entrada 
uma ou mais relações 
e produz como saída 
uma nova relação.
Exemplo: Pedido – Modelo Relacional
9. Álgebra Relacional: Operações
Operações:
• Projeção
• Seleção
• União
• Rename
• Produto Cartesiano
• Junção
9.1. Operação: Projeção - pipipipi
Sintaxe:
SELECT <nome da(s) coluna(s)>
FROM <tabela(s)>;
a. Selecionando colunas específicas:
select descricao_produto, unidade from
produto;
b. Selecionando todas as colunas da tabela:
select * from produto;
9.2. Operação: Seleção - σσσσ
Sintaxe:
SELECT <nome da(s) coluna(s)>
FROM <tabela(s)>
WHERE <restrição(ões)>;
Onde:
WHERE <nome da coluna> <operador> <valor>
c.1) Operadores Relacionais:
• = , != , < , >
• >= , <=
9.2. Operação: Seleção - σσσσ
Exemplo:
• Listar o num_pedido, o código_produto e a quantidade dos
itens do pedido com a quantidade igual a 35:
select num_pedido, cod_produto, quantidade
from item_pedido
where quantidade = 35;
Observações: quando o atributo é do tipo caracter ou data o
<valor> deve estar entre aspas simples (‘). Ex: ‘Parafuso’.
Em SQL existe diferença entre ‘Parafuso’ e ‘parafuso’.
num_pedido cod_produto quantidade
121 31 35
138 77 35
9.2. Operação: Seleção - σσσσ
c.2) Operadores Lógicos:
• AND, OR
• NOT
• Uso de ( ) para alterar a precedência: AND -> OR
Exemplo:
• Listar os vendedores que tenham faixa de comissão igual a 
'1' e que ganham mais de R$ 1000:
select nome_vendedor
from vendedor
where faixa_comissao = '1' 
and salario_fixo > 1000;
9.2. Operação: Seleção - σσσσ
Exemplo:
• Listar os produtos cuja unidade não seja ‘KG’:
select descricao_produto
from produto
where not (unidade = 'KG');
9.2. Operação: Seleção - σσσσ
c.3) Operadores LIKE e NOT LIKE:
• LIKE e NOT LIKE só trabalham sobre colunas que sejam do 
tipo CHAR.
• Eles têm praticamente o mesmo funcionamento que =, !=;
• Podem utilizar os símbolos ( % ) e ( _ ) que podem fazer o 
papel de "Curinga":
– % : substitui uma palavra
– _ : substitui um caractere
Exemplo:
• ‘LAPIS %’ pode enxergar os seguintes registros:
– ‘LAPIS PRETO’
– ‘LAPIS CERA'
• ‘BROCA N_’ pode enxergar os seguintes registros:
– ‘BROCA N1’
– ‘BROCA N3’
9.2. Operação: Seleção - σσσσ
Exemplo:
• Listar todos os produtos que tenham a sua unidade 
começando por ‘K’.
select cod_produto, descricao_produto
from produto
where unidade like 'K_' ;
9.2. Operação: Seleção - σσσσ
c.4) Operadores IS NULL e IS NOT NULL:
• where <nome da coluna> IS NULL;
• where <nome da coluna> IS NOT NULL;
Exemplo:
• Mostrar os clientes que não tenham inscrição
estadual:
select *
from cliente
where ie is null;
9.2. Operação: Seleção - σσσσ
c.5) Ordenando resultados:
SELECT <nome da(s) coluna(s)>
FROM <tabela>
WHERE <condição(es)>
ORDER BY <nome da(s) coluna(s)> ASC (default) / DESC
Exemplo:
• Mostrar em ordem alfabética a lista de vendedores e
seus respectivos salários fixos.
select nome_vendedor, salário_fixo
from vendedor
order by nome_vendedor;
9.2. Operação: Seleção - σσσσ
Propriedades da Operação Seleção:
• O operador de seleção é unário (aplicado a uma
única relação);
• O grau da relação resultante é o mesmo da
relação original;
• O número de tuplas da relação resultante é menor
ou igual ao número de tuplas da relação original.
9.3. Operação: União - ∪∪∪∪
• Combina os resultados de duas ou mais seleções feitas sobre tabelas.
Duplicatas são eliminada;
• Devem selecionar o mesmo número de colunas;
• As colunas selecionadas devem ser do mesmo tipo.
Exemplo: Listar os nomes e códigos dos vendedores que têm salário fixo
maior que RS 1.000,00 e nomes e códigos de clientes que residem no
Rio de Janeiro.
select cod_vendedor, nome_vendedor
from vendedor
where salario_fixo > 1000.00
union
select cod_cliente, nome_cliente
from cliente
where cidade = 'Rio de Janeiro';
9.4. Operação: Rename - ρρρρ
• Mecanismo para renomear relações e também
atributos. Indicada para que o valor de retorno
tenha um nome mais fácil de ser identificado.
Exemplo: Selecionar o código do produto e sua
descrição.
select cod_produto "Código do Produto", 
descricao_produto "Descrição do Produto"
from produto P;
9.5. Operação: Junção (JOIN)
• Trabalhamos até agora com a recuperação de
dados sobre apenas uma tabela, no entanto um
banco de dados é formado por várias tabelas que
se relacionam;
• Para recuperar informações em de várias tabelas
muitas vezes precisamos realizar uma JUNÇÃO
(JOIN) entre as tabelas. É esta operação e suas
implicações que serão abordados neste
momento.
9.5. Operação: Junção (JOIN)
O Conceito de Qualificadores de Nome:
• Consiste em identificar as colunas pôr meio do 
nome das tabelas;
• Qualificador de nome para a coluna descrição da 
tabela PRODUTO será:
PR0DUT0. descricao_produto
• Os qualificadores de nome são utilizados em uma 
consulta para efetivar a junção (JOIN) entre 
tabelas (nomes de colunas iguais em tabelas 
diferentes).
9.5. Operação: Junção (JOIN)
Exemplo:
Juntar a tabela cliente com pedido,
identificando os pedidos de cada cliente.
9.5. Operação: Junção (JOIN)
Exemplo:
Uma solução é realizar a operação de produto 
cartesiana entre os dois conjuntos.
9.5. Operação: Junção (JOIN)
Exemplo:
Uma solução é realizar a operação de produto 
cartesiana entre os dois conjuntos.
select cliente.nome_cliente, 
pedido.cod_cliente, 
pedido.num_pedido
from cliente, pedido;
9.5. Operação: Junção (JOIN)
cliente.nome_cliente pedido.cod_cliente pedido.num_pedido
Ana 765 001
Ana 765 002
Ana 765 003
Ana 765 004
Ana 765 005
José 834 001
José 834 002
José 834 003
José 834 004
José 834 005
9.5. Operação: Junção (JOIN)
• Podemos notar que dessa operação de junção,
poucas informações podem ser extraídas;
• Uma vez que a operação realizada foi a de
produto cartesiano, onde é feita a combinação
de cada elemento de um conjunto com todos os
elementos do outro conjunto;
• Assim, há a necessidade de qualificar o tipo de
junção, para podermos obter algum resultado
concreto.
9.5. Operação: Junção (JOIN)
• Para isso, precisamos informar qual a relação
entre as tabelas qualificando dessa forma a
junção.
Equação de JUNÇÃO
SELECT cliente.nome_cliente, 
pedido.cod_cliente, 
pedido.num_pedido
FROM cliente, pedido
WHERE cliente.cod_cliente = 
pedido.cod_cliente
9.5. Operação: Junção (JOIN)
cliente.nome_cliente pedido.cod_cliente pedido.num_pedido
Ana 765 001
Ana 765 002
Ana 765 003
José 834 004
José 834 005
Forma simplificada utilizando RENAME:
select c.nome_cliente,
p.cod_cliente,
p.num_pedido
FROM cliente c, pedido p
WHERE c.cod_cliente = p.cod_cliente;
EXERCÍCIOS:
1. Liste os clientes e seus respectivos endereços que moram
em ‘São Paulo‘ OU estejam na faixa de CEP entre
'30077000' e '30079000‘.
2. Listar o código e a descrição dos produtos que tenham o
valor unitário >= 0,32 e =< 2,00.
3. Quais os pedidos da vendedora Maria possuem clientes
que moram em São Paulo ou no Rio de Janeiro?
4. Mostrar os clientes e seus respectivos prazos de entrega,
ordenados do maior para o menor.
EXERCÍCIOS:
5. Mostre os clientes (ordenados) que têm prazo de entrega
maior que 10/10/2009 para o produto ‘Cimento’ e que
sejam de São Paulo.
6. Mostre todos os vendedores que venderam areia em
quantidade superior a 10 M3.
7. Selecione todos os vendedores que não tenham faixa de
comissão.
8. Selecione todosos pedidos dos vendedores cujo nome
inicia pela letra ‘J’.

Continue navegando