linguagens de consulta

66
Linguagens de Consulta Álvaro Vinícius de Souza Coêlho [email protected]

Upload: torin

Post on 22-Jan-2016

19 views

Category:

Documents


0 download

DESCRIPTION

Linguagens de Consulta. Álvaro Vinícius de Souza Coêlho [email protected]. Linguagens de Consulta para SGBDs Relacionais. Linguagem de Consulta é uma denominação genérica para linguagens que permitem DML (Data manipulation Language) e DDL (Data Definition Language). - PowerPoint PPT Presentation

TRANSCRIPT

  • Linguagens de Consultalvaro Vincius de Souza [email protected]

  • Linguagens de Consulta para SGBDs Relacionais

    Linguagem de Consulta uma denominao genrica para linguagens que permitem DML (Data manipulation Language) e DDL (Data Definition Language).No tocante ao respaldo comercial e acadmico, trs linguagens se destacam: Quel, QBE e, a mais importante de todas, SQL (ame-a ou deixe-a).

  • Ling. de Consulta p/ SGBDRExistem outras, com importncia no desprezvelLing. Proprietrias de bancos de dados em Main FrameXbase, desenvolvida para sistemas de dados tipo DBFAproveitada em alguns SGBDs (TSGBD)

  • Ling. de Consulta p/ SGBDRQBESigla de Query By ExampleCentro de Pesquisa T. J. Watson (IBM), incio dos anos 70Sintaxe Bidimensional consulta => exemplo da projeo desejada

  • Ling. de Consulta p/ SGBDRTabelas-EsqueletoSo um esquema das tabelas de Banco de Dados

  • Ling. de Consulta p/ SGBDR

  • Ling. de Consulta p/ SGBDRUma consultaMostrar todos os clientes com conta em Cruzeiro

  • Ling. de Consulta p/ SGBDR_x uma varivel tipo tupla (que armazena conjuntos relaes de dados). O _ obrigatrioP. um comando que indica que aquela varivel deve ser impressa Pode-se omitir a varivel caso haja apenas uma na posio

  • Ling. de Consulta p/ SGBDRA QBE elimina resultados duplicados por padro. Para mostr-los, deve-se usar

  • Ling. de Consulta p/ SGBDRAs consultas podem ter comparaes aritmticas

  • Ling. de Consulta p/ SGBDRPode-se usar =, = e ~. Para a comparao de variveis distintas h uma estrutura adicional mostrada adianteConsulta: Mostrar todas as agncias fora de Ilhus

  • Ling. de Consulta p/ SGBDRAs variveis servem para ligar resultados parciais de pesquisaListar clientes com contas em Cruzeiro e Salobrinho

  • Ling. de Consulta p/ SGBDRAs variveis tupla vo sendo podadas a cada condio satisfeita, de forma que s a interseco mantidaModificar a consulta para: Mostrar clientes que tenham conta em Cruzeiro ou Salobrinho (ou ambas)

  • Ling. de Consulta p/ SGBDRO uso de duas variveis fora a linguagem a fazer um filtro em cada, mantendo os conjuntos de dados intactos. As duplicaes so removidas por padro.Se a consulta depende de um valor dado: Mostrar clientes que tenham conta onde Jos tambm tem

  • Ling. de Consulta p/ SGBDRConsultas podem ser feitas em mais de uma tabela: Qual o nome e a cidade dos clientes com conta em Cruzeiro?

  • Ling. de Consulta p/ SGBDROu pode-se trazer e mostrar dados de duas tabelas: Mostrar os clientes que tenham uma conta e um emprstimo na agncia Cruzeiro

  • Ling. de Consulta p/ SGBDRA consulta inversa tem conta em Cruzeiro mas no tem emprstimo l muda apenas por ganhar a negao sob o nome da tabela emprstimoO sinal de negao sob o nome da tabela tem o sentido, para a QBE de no inclua as selees dali. Se o sinal, ao contrrio, aparece sob uma coluna, tem o sentido de .

  • Ling. de Consulta p/ SGBDRMostrar os clientes que tem conta em duas agncias distintas

  • Ling. de Consulta p/ SGBDRA condition box Serve para explicitar condies de seleo que envolvam mais de uma varivel ou coluna No mostrar, na consulta anterior, o cliente Jos

  • Ling. de Consulta p/ SGBDRMostrar as contas com saldo entre 1300 e 1500

  • Ling. de Consulta p/ SGBDRMostrar as agencias com ativos maiores que qualquer agncia de Ilhus

  • Ling. de Consulta p/ SGBDRNa caixa de condio podem aparecer tambm os operadores lgicos and e or (o ~tambm pode assumir as vezes de not). Ex: _x = (>= 1300 and
  • Ling. de Consulta p/ SGBDROrdenando resultados: P.AO e P.DO (Ascending Order e Descending Order) como nos dois exemplos distintos:

    Ou

  • Ling. de Consulta p/ SGBDRA ltima mostra os clientes e os saldos das contas em Cruzeiro classificados pelo nome em ordem crescente, e cada cliente pelo saldo em ordem decrescente

  • Ling. de Consulta p/ SGBDRAgregaes A QBE inclui operaes como AVG, MAX, MIN, SUM E CNT que operam sobre agregados de dados necessrio ps-fix-las com ALL pois o QBE omite duplicaes

  • Ling. de Consulta p/ SGBDR

  • Ling. de Consulta p/ SGBDRAgrupamentosO Operador G agrupa os resultados de acordo com o valor da coluna

  • Ling. de Consulta p/ SGBDRA agregao pode vir dentro da condition Box

  • Ling. de Consulta p/ SGBDRDML em QBE Excluso: O comando D.

  • Ling. de Consulta p/ SGBDRIncluso: O comando I .

    Isso s possvel se a coluna Ativos no for obrigatria.Caso contrrio, deve-se valor-la.

  • Ling. de Consulta p/ SGBDRIncluso a partir de consultasCriar um depsito de R$200 para clientes de Cruzeiro, com nmero de conta igual ao nmero do emprstimo

  • Ling. de Consulta p/ SGBDRAtualizao: O comando U.Muda o valor dos ativos da agncia Cruzeiro para R$10000000

  • Ling. de Consulta p/ SGBDRPode-se usar como base o prprio valor da coluna

  • Ling. de Consulta p/ SGBDRQuelFeita para o SGBDR IngresDesenvolvida em Berkeley (como o Unix) pela atual Ingres Inc (que pertence CA-Computer Associates)Declarativa Pode ser embutida

  • Ling. de Consulta p/ SGBDREstrutura Bsica Range of t1 is r1Range of t2 is r2 ...range of tm is rmretrieve (ti1.aj1, ti2.aj2, , tin.ajn)where P

  • Ling. de Consulta p/ SGBDRConsultas simples: Mostrar o nome dos clientes com conta em CruzeiroRange of d is depositoRetrieve (t.cliente_nome)Where t.agencia_nome = Cruzeiro

  • Ling. de Consulta p/ SGBDRAo contrrio de QBE, Quel no elimina duplicaes A nova consulta elimina as duplicaes Range of d is depositoRetrieve unique (t.cliente_nome)Where t.agencia_nome = Cruzeiro

  • Ling. de Consulta p/ SGBDRPode-se fazer consultas usando mais de uma tabelaMostrar o nome e a cidade de todos os clientes com um emprstimo em Cruzeiro

  • Ling. de Consulta p/ SGBDRFica assim:Range of c is clienteRange of e is emprestimoRetrieve unique (c.cliente_nome, c.cliente_cidade)Where e.agencia_nome = Cruzeiro ande.cliente_nome = c.cliente_nome

  • Ling. de Consulta p/ SGBDRUsa-se os operadores lgicos and, or e not Encontre o nome dos clientes com conta e emprstimo em Cruzeiro

  • Ling. de Consulta p/ SGBDRFica:Range of e is emprstimoRange os d is depositoRetrieve unique (d.cliente_nome)Where d.agencia_nome = Cruzeiro ande.agencia_nome = Cruzeiro andd.cliente_nome = e.cliente_nome

  • Ling. de Consulta p/ SGBDRPode-se usar mais de uma varivel (do tipo tupla) como range da mesma tabela: Mostrar os clientes que tem conta em agncias onde Jos tambm tem

  • Ling. de Consulta p/ SGBDRFica:Range of d1 is depositoRange of d2 is depositoRetrieve unique (d1.cliente_nome)Where d1.agencia_nome = d2.agencia_nome andd2.cliente_nome = Jos

  • Ling. de Consulta p/ SGBDRRange of... desnecessrio quando no h duas projees da mesma tabelaMas se escreve muito no Predicado

  • Ling. de Consulta p/ SGBDRFunes agregadasQuel inclui as funes count, sum, avg, max, min, countu, sumu, avgu e anyAs terminadas em u removem duplicaesO agrupamento definido como parte da expresso agregada

  • Ling. de Consulta p/ SGBDRFunes agregadasFuno (t.a)Funo (t.a where P)Funo (t.a by s.b1, s.b2, ..., s.bn where P)

  • Ling. de Consulta p/ SGBDRConsulta: Mostrar a media dos saldos das contas da agncia CruzeiroRange of t is depositoRetrieve avg(t.saldo where t.agencia_nome = Cruzeiro)

  • Ling. de Consulta p/ SGBDRA funo agregada pode aparecer na clusula where Mostrar os clientes com saldo acima da mdia

  • Ling. de Consulta p/ SGBDRFica:Range of d1 is depositoRange of d2 is depositoRetrieve unique(d1.cliente_nome)Where d1.saldo > avg(d2.saldo)

  • Ling. de Consulta p/ SGBDRModificao: Mostrar os clientes com saldo acima da mdia das contas na agncia CruzeiroA clusula where mudaria paraWhere d1.saldo > avg(d2.saldo where d2.agencia_nome = Cruzeiro)

  • Ling. de Consulta p/ SGBDRMostrar as contas com saldo superior mdia das demais na mesma agnciaRange of d1 is depositoRange of d2 is depositoRetrieve d1.conta_numeroWhere d1.saldo > avg (d2.saldo by agencia_nome where d2.agencia_nome = d1.agencia_nome)

  • Ling. de Consulta p/ SGBDRBY?Estabelece por qual coluna vai-se agrupar para efeito da funo de agregaoMostrar os clientes com conta na agncia Cruzeiro mas sem emprstimo l

  • Ling. de Consulta p/ SGBDRFica:range of d is depositorange of e is emprestimoretrieve unique d.cliente_nomewhere d.agencia_nome = "Cruzeiro" andcount(e.cliente_nome by e.cliente_nomewhere e.agencia_nome = Cruzeiro ande.cliente_nome = d.cliente_nome) = 0

  • Ling. de Consulta p/ SGBDRPode-se usar a funo any, que retorna 1 se houver valores selecionados ou 0 caso contrrio...where d.agencia_nome = Cruzeiro andany(e.cliente_nome by e.cliente_nomewhere e.agencia_nome = Cruzeiro ande.cliente_nome = d.cliente_nome) = 0

  • Ling. de Consulta p/ SGBDRA vantagem de any Para concluir seu valor (caso seja 1) no precisa computar todos os dados, ao contrrio de Count

  • Ling. de Consulta p/ SGBDRDML com QUELExcluso Range of t is rDelete tWhere P

  • Ling. de Consulta p/ SGBDRExemplo:Range of e is emprestimoDelete e Remove todas as linhas de e

  • Ling. de Consulta p/ SGBDRExemplo2:Range of d is depositoDelete dWhere d.cliente_nome = Sandra Remove todas as contas de Sandra

  • Ling. de Consulta p/ SGBDRPara remover todos os depsitos em agncias localizadas em Itapetinga:Range of a is agenciaRange of d is depositoDelete dWhere d.agencia_nome = a.agencia_nome anda.cidade = Itapetinga

  • Ling. de Consulta p/ SGBDRInclusoO comando AppendAppend to deposito (agencia_nome = Cruzeiro,Conta_numero = 9732,Cliente_nome = Sandra)O comando acima s vlido se Saldo permitir valores nulos

  • Ling. de Consulta p/ SGBDRIncluindo a partir de outras tabelas:O mesmo exemplo: Incluir um depsito de 200 para clientes com emprstimo em Cruzeiro, com nmero da conta igual ao nmero do emprstimo

  • Ling. de Consulta p/ SGBDRFica:Range os e is emprstimoAppend to deposito (agencia_nome = Cruzeiro,conta_numero = e.emp_numero,cliente_nome = e.cliente_nome,saldo = 200)where e.agencia_nome = Cruzeiro

  • Ling. de Consulta p/ SGBDRAtualizaes: O comando ReplaceAcrescentar 5% aos saldos de contarange of d is depositoreplace d(saldo = 1.05 * saldo)

  • Ling. de Consulta p/ SGBDRPagar 6% para saldos acima de 10000 e 5% aos demaisDuas operaes de altero (observar que a ordem relevante)

  • Ling. de Consulta p/ SGBDRFica:Range of d is depositoReplace d(saldo = 1.06*saldo)Where d.saldo > 10000Range of d is depositoReplace d(saldo = 1.05*saldo)Where d.saldo
  • Projeto de BDs RelacionaisFIM!No que eu tenha medo de morrer. que eu no quero estar l na hora que isso acontecerWoody AllenPortinari