Upload
internet
View
120
Download
0
Embed Size (px)
Citation preview
QBE e QUEL
Ana Carolina Salgado
Fernando Fonseca
Valéria Times
QBE
A Linguagem QBE Desenvolvida pela IBM (DB2, Paradox). Uma das primeiras linguagens de
consulta gráficas para BD. Usuário não precisa especificar uma
consulta estruturada explicitamente. A consulta é formulada escrevendo-se
em modelos (templates) de relações.
EmpregadoCad Nome Sexo Salário Num-Dep Cad-Spv
QBE
A Linguagem QBE (Cont.) Constantes e variáveis são digitadas nas colunas
dos templates para construção de um exemplo.
Vantagens de QBE Usuários não precisam:
– Lembrar dos nomes dos atributos ou relações.– Seguir regras de sintaxe rígidas para
especificação da consulta.
QBE
Consultas Básicas Para uma dada consulta, pode-se digitar:
– Constantes: especificam valores que devem aparecer exatamente nas colunas.
– Elementos de Exemplo:• Consistem em variáveis de domínio• Possuem valores apenas ilustrativos• Devem ser precedidas pelo (_).
– Operador “P”: Indicam a necessidade de impressão dos valores nas colunas.
Esquema Relacional dos Exemplos de QBE
Num-Dep Num-LocLocais
Trabalha-em Cad-Emp Num-Proj Horas
Empregado Cad Nome Sexo Salário Num-Dep Cad-Spv
Departamento Número Nome Cad-Ger Data-Ini
Cad Nome Data-nasc Grau-PDependente
Projeto Número Nome Local Num-Dep
QBEProblemas:
Listar o salário e o código do departamento do empregado ‘José’.
Empregado Cad Nome Sexo Salário Num-Dep Cad-Spv
_01 José M P._1000 P._010 _03
José M P._1000 P._010
José M P._X P._Y José M P. P.
QBE Utilizando outros operadores relacionais
Problemas: Listar os códigos dos empregados que trabalham mais do
que 20 horas no projeto 10.
Trabalha-em Cad-Emp Num-Proj Horas
P. 10 >20
P. 1 >20
P. 2 >20
P. _ PX _HXCondição: _HX > 20 AND(_PX = 1 OR _PX = 2 )
QBEProblemas: Listar os códigos dos empregados que
trabalham em ambos projetos 10 e 15.
Trabalha-em Cad-Emp Num-Proj Horas
P. _ES 10
P. _ES 15
P._EX 10
Condição: _EX = _EY P._EY 15
QBE Operação de Junção:
– Usando a mesma variável nas colunas a serem juntadas.– Várias junções podem ser especificadas em uma única
consulta.– Uma tabela de resultado para exibir o resultado da junção pode
ser especificada.
Problemas: Listar os nomes e os salários dos empregados que trabalham no
departamento de Física.
QBE
_DEP Física
Departamento Número Nome Cad-Ger Data-Ini
Resultado
P. _NOM _SAL Especifica que todos os atributos da relação devem ser recuperados
Empregado Cad Nome Sexo Salário Num-Dep Cad-Spv
_NOM _SAL _DEP
QBEJunção recursiva: Usa-se variáveis distintas para representar as
diferentes referências à tabela.
Problemas: Para cada empregado, mostre o nome e o salário bem como o nome e
o salário de seu supervisor.
Empregado Cad Nome Sexo Salário Num-Dep Cad-Spv
_E1 _E2 _COD_COD _S1 _S2
Resultado
P. _E1 _E2 _S1 _S2
QUEL
A Linguagem QUEL
Linguagem de Consulta do SGBD INGRES, um dos primeiros sistemas relacionais, amplamente conhecido tanto no meio acadêmico quanto comercial.
Utiliza o Cálculo Relacional: utilização de variável tupla, a qual se estende
por uma relação, construção baseada nos predicados de
primeira ordem.
Esquema Relacional dos Exemplos de QUEL
Vendedor Matrícula Nome Salário Comissão
Produto Código-p Descrição Unidade Valor
Número Prazo Código-c MatrículaPedido
Item-do-Pedido Número Código-p Quantidade
Cliente Código-c Nome Endereço Cidade CEP UF CGC
QUEL
Estrutura básica: Comando Range
range of t is r
onde: – t é uma variável tupla, restrita a assumir
valores de tuplas na relação r– r é uma relação
Exemplo:
range of P is Produto
QUEL
Estrutura básica: Comando Retrieve
retrieve [ [into] (<tabela>)]
[ [unique] (<variável.ALL ou
referência a atributo ou
atributo = expressão>) ]
[where <condição>]
[sort by < [variável.] atributo [:A | :D]>]
QUEL
Estrutura básica:
Exemplo:
range of P is Produto
retrieve (P.descrição)
where P.valor > 10;
QUELProblemas:
Listar a descrição de todos os produtos com seus valores unitários
range of P is Produto
retrieve (P.descrição, P.valor); Listar todo o conteúdo da tabela vendedor
range of X is Vendedor
retrieve (X.ALL);
QUELProblemas: Listar o número do pedido e o código do produto
no item-do-pedido com quantidade igual a 35
range of S is item-do-pedido
retrieve (S.número, S.código-p)
where S.quantidade = 35; Listar os nomes dos clientes com as respectivas
cidades e estado na ordem alfabética reversa
range of Y is Cliente
retrieve (Y.nome, Y.cidade, Y.UF)
sort by Y.UF: D, Y.cidade: D;
QUELProblemas: Mostrar a quantidade total pedida para o
produto VINHO de código 78
range of R is item-do-pedido
retrieve (Z = sum(R.quantidade))
where R.código-p = 78; Quais os clientes que fizeram pedidos?
range of C is Clienterange of P is Pedidoretrieve unique (C.nome) where C.código-c = P.código-c;
QUELProblemas: Mostre os clientes ordenados pelos nomes, que
têm prazo de entrega maior que 15 dias para o produto ‘queijo’
range of C is Clienterange of P is Pedidorange of PR is Produtorange of I is item-do-pedidoretrieve unique (C.nome) where C.código-c = P.código-c and
P.número = I.número and I.código-p=PR.código-pand P.prazo > 15 and PR.descrição = ‘queijo’;
QUEL e SQLExercícios:
1) Listar todo o conteúdo da tabela produto
2) Listar os produtos que tenham unidade igual a “M” e valor unitário igual a 1,05
3) Quais os clientes que fizeram pedidos?
4) Listar o número do pedido em ordem crescente, o nome de cada produto em ordem alfabética e o valor total de cada item pedido.
5) Mostre o nome e o endereço dos clientes cujos pedidos têm um prazo de entrega inferior a 7dias
6) Quais as descrições dos produtos comprados pelo cliente de nome “José”?
QUEL e SQL
7) Listar os vendedores ordenados pelo nome que venderam produtos com valor unitário superior a 100 ou em uma quantidade maior do que 10.
8) Liste os vendedores ordenados pelo nome que têm pedidos de vinhos com prazo de entrega vencido (igual a zero).
9) Quantos pedidos foram realizados por vendedor? (apenas em SQL)
10) Mostre os clientes do vendedor ‘André’, ordenados pelo nome, com seus respectivos endereços e agrupados pela UF. (apenas em SQL)