QBE e QUEL Ana Carolina Salgado Fernando Fonseca
QBE e QUEL Ana Carolina Salgado Fernando Fonseca Valéria Times
QBE A Linguagem QBE n n Desenvolvida pela IBM (DB 2, 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. Empregado Cad Nome Sexo Salário Num-Dep Cad-Spv
QBE A Linguagem QBE (Cont. ) n Constantes e variáveis são digitadas nas colunas dos templates para construção de um exemplo. Vantagens de QBE n 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 n 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 Empregado Cad Departamento Número Locais Projeto Num-Dep Número Nome Sexo Nome Salário Cad-Ger Data-Ini Num-Loc Nome Local Num-Dep Trabalha-em Cad-Emp Num-Proj Horas Dependente Cad Nome Data-nasc Grau-P Num-Dep Cad-Spv
QBE Problemas: n Listar o salário e o código do departamento do empregado ‘José’. Empregado Cad _01 Nome José Sexo M M Salário P. _1000 P. _X P. Num-Dep Cad-Spv P. _010 P. _Y P. _03
QBE Utilizando outros operadores relacionais Problemas: n Listar os códigos dos empregados que trabalham mais do que 20 horas no projeto 10. n Trabalha-em Cad-Emp Num-Proj Horas P. 10 >20 P. _ PX _HX P. 1 >20 P. 2 >20 Condição: _HX > 20 AND (_PX = 1 OR _PX = 2 )
QBE Problemas: n Listar os códigos dos empregados que trabalham em ambos projetos 10 e 15. Trabalha-em Cad-Emp Num-Proj P. _ES 10 15 P. _EX P. _EY 10 15 Horas Condição: _EX = _EY
QBE n 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: n Listar os nomes e os salários dos empregados que trabalham no departamento de Física.
QBE Empregado Cad Nome Sexo Salário _NOM Departamento Número Nome _DEP Física _NOM _SAL Cad-Ger Num-Dep Cad-Spv _DEP Data-Ini Resultado P. Especifica que todos os atributos da relação devem ser recuperados
QBE Junção recursiva: Usa-se variáveis distintas para representar as diferentes referências à tabela. Problemas: n Para cada empregado, mostre o nome e o salário bem como o nome e o salário de seu supervisor. Empregado Cad _COD Nome Sexo _E 1 _S 1 Salário _E 2 _S 2 Resultado P. _E 1 _E 2 _S 1 _S 2 Num-Dep Cad-Spv _COD
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: n utilização de variável tupla, a qual se estende por uma relação, n construção baseada nos predicados de primeira ordem.
Esquema Relacional dos Exemplos de QUEL Cliente Código-c Vendedor Matrícula Nome Endereço Salário Pedido Número Prazo Produto Código-p Descrição Unidade Item-do-Pedido Número Código-c Código-p Cidade CEP Comissão Matrícula Valor Quantidade UF CGC
QUEL Estrutura básica: n 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: n 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;
QUEL Problemas: n n 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);
QUEL Problemas: n 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; n 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;
QUEL Problemas: n 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; n Quais os clientes que fizeram pedidos? range of C is Cliente range of P is Pedido retrieve unique (C. nome) where C. código-c = P. código-c;
QUEL Problemas: n Mostre os clientes ordenados pelos nomes, que têm prazo de entrega maior que 15 dias para o produto ‘queijo’ range of C is Cliente range of P is Pedido range of PR is Produto range of I is item-do-pedido retrieve 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-p and P. prazo > 15 and PR. descrição = ‘queijo’;
QUEL e SQL Exercí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 7 dias 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)
- Slides: 22