Baixe o app para aproveitar ainda mais
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’.
Compartilhar