Subconsultas ou Consultas Aninhadas Forma alternativa de especificar consultas envolvendo relacionamentos entre tabelas Otimização –filtragens prévias.

Slides:



Advertisements
Apresentações semelhantes
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Advertisements

Álgebra Relacional Marcelo Mendes Manaus
SQL Avançado Continuação
SQL Structured Query Language (continuação)
Prof.: Bruno Rafael de Oliveira Rodrigues
Prof. Bruno Rafael de Oliveira Rodrigues
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Linguagens relacionais
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
SQL Exercícios de Revisão
Algebra relacional nomeada e não-nomeada
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Exemplo Hospitalar Exemplo: BD para uma realidade hospitalar
Subconsultas ou Consultas Aninhadas
SQL – Consultas Básicas
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
SQL – DML Consultas envolvendo relacionamentos entre tabelas
SQL – DML Consulta a dados de uma tabela
Ordenação de Resultados
ÁLGEBRA RELACIONAL Cada operador da álgebra relacional toma uma ou duas relações como sua entrada e gera uma nova relação como saída. São oito os operadores.
Operadores Especiais da SQL
SCC Bancos de Dados e Suas Aplicações
Prof. Alexander Roberto Valdameri
Linguagem de Banco de Dados - SQL
Linguagem de Banco de Dados - SQL
Equipe de monitoria Aula prática 2. Apresentação do caso de estudo Conceitual Lógico Algumas informações iniciais Consultas e exercícios Surpresa... =)
SQL (Structured Query Language)
Geração de Planos de Execução Planos para Consultas Aninhadas
SQL Álvaro Vinícius de Souza Coêlho
Otimizador de consultas
Banco de Dados Aplicado ao Desenvolvimento de Software
Otimização de Consultas em SQL Planos de Execução
Cálculo relacional Lílian Simão Oliveira.
sintonia de banco de dados
Desenvolvendo um script SQL
Álgebra Relacional (Exemplos)
CÁLCULO RELACIONAL Lílian Simão Oliveira. Cálculo Relacional  é uma linguagem de consulta formal. Utilizando-se de uma expressão declarativa pode-se.
Baseado no material do Professor Raul Paradeda
Comandos SQL.
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Algoritmos para Operações Binárias entre blocos SQL AULA 19 – Parte I Profa. Sandra de Amo GBC053 – BCC.
Cálculo Relacional.
AULA DE DÚVIDAS 9 de Abril de Especialização  Simplifica-se quando:  especialização é disjunta e  especialização é total e  não há relações.
Banco de Dados I I Comandos SQL
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Prof. Rebecca Arambasic AGBD LPBD Pesquisa avançada UNION / INTERSECT / EXCEPT Aula 1 / 2010.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
Visões Visão tabela derivada a partir das tabelas do BD tabela virtual
Sumário 1 SQL Embutida 2 Processamento de Consultas
SQL (Structured Query Language)
Modelo de base de dados relacional
SQL – DML Consultas envolvendo mais de uma tabela
1 Structured Query Language (SQL) 4 SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.
Subconsulta na Cláusula FROM
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Uma Proposta para Bancos de Dados Categoriais Rafael C. Pinto.
Daniel Paulo Funções de cadeia de caracteres LEN – Conta os caracteres de uma string SELECT LEN(‘BRASIL’) REPLICATE – Repete.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Daniel Paulo SQL Módulo I Daniel Paulo
Daniel Paulo SQL Módulo I Daniel Paulo
Recuperação de Dados Banco de Dados Carina Farias
UCSal – Bacharelado em Informática
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 4 SQL básica.
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
José Antônio da Cunha 2/6/2016 José Antônio - CEFET-RN 1 Disciplina: Banco de Dados.
Prática de Banco de Dados Créditos: Prof. Jefferson Silva Adaptações: Prof. Nécio de Lima Veras.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Álgebra Relacional Prof.: José Antônio da Cunha CEFET-RN
Álgebra Relacional Vania Bogorny.
Álgebra Relacional Vania Bogorny.
Transcrição da apresentação:

Subconsultas ou Consultas Aninhadas Forma alternativa de especificar consultas envolvendo relacionamentos entre tabelas Otimização –filtragens prévias de dados na subconsulta apenas tuplas/atributos de interesse são combinados com dados da(s) tabela(s) da consulta externa Cláusulas de subconsulta –nome_atributo [NOT] IN (consulta_SQL) –nome_atributo [ | >= | | !=] ANY (consulta_SQL) –nome_atributo [ | >= | | !=] ALL (consulta_SQL)

Subconsultas com IN Testam uma relação de pertinência elemento- conjunto select lista_atributos from tabela1 [...] where atributo_ou_expressão [NOT] IN (consulta_SQL) Mapeamento para a álgebra relacional select a 1,..., a n from t 1 where c IN (select x from t 2 where d > 5)  a1,..., an (t 1  X (  x (  d > 5 (t 2 ))))  = t 1.c = t 2.x

Exemplos ÁlgebraSQL  nome ( (Médicos  X  = Médicos.codm = Consultas.codm (  codm (  data = ’06/06/13’ (Consultas))) ) ) Select nome From Médicos Where codm in (select codm from Consultas where data = ‘06/06/13’) (  RG (Funcionários))  (  RG (Pacientes)) Select RG From Funcionários Where RG not in (select RG from Pacientes) (  RG (Médicos))  (  RG (Pacientes)) Select RG From Médicos Where RG in (select RG from Pacientes)

Diferença/Intersecção de Tabelas Exige tabelas compatíveis Exemplos Observação –MySQL não implementa estas operações ÁlgebraSQL relação1  relação2 consultaSQL1 except consultaSQL2 relação1  relação2 consultaSQL1 intersect consultaSQL2 (  RG (Funcionários))  (  RG (Pacientes)) Select RG From Funcionários except Select RG From Pacientes (  RG (Médicos))  (  RG (Pacientes)) Select RG From Médicos intersect Select RG From Pacientes

Subconsultas com ANY Permitem outras comparações do tipo elemento-conjunto –testam se um valor é >, <, =,... que algum valor em um conjunto select lista_atributos from tabela1 [,...] where atributo_ou_expressão [=| |>=|<>| != ] ANY (consulta_SQL) Mapeamento para a álgebra relacional select a 1,..., a n from t 1 where c > ANY (select x from t 2 where d > 5)  a1,..., an (t 1  X (  x (  d > 5 (t 2 ))))  = t 1.c > t 2.x

Exemplos ÁlgebraSQL  nome ( (Médicos  X  = Médicos.codm = Consultas.codm (  codm (  data = ’06/06/13’ (Consultas))) ) ) Select nome From Médicos Where codm = any (ou in) (select codm from Consultas where data = ‘06/06/13’)  Funcionários.idade ( ((  idade (Funcionários))  X  = Funcionários.idade < f2.idade (  idade (  f2 (Funcionários))) Select nome From Funcionários Where idade < any ( Select idade from Funcionários)

Subconsultas com ALL Realizam uma comparação de igualdade ou desigualdade de um elemento com todos os elementos de um conjunto ao mesmo tempo select lista_atributos from tabela1 [,...] where atributo_ou_expressão [=| |>=|<>| != ] ALL(consulta_SQL) Não há correspondência com a álgebra relacional –não é equivalente a divisão não filtra automaticamente atributos do dividendo na divisão, os operandos podem ter mais de um atributo na divisão existe apenas comparação de igualdade

Exemplos Select nome From Funcionários Where salário > all (Select salário From Funcionários Where departamento = ‘enfermaria’) Select nome From Funcionários Where RG all (or not in) (Select RG From Pacientes)

Comparações Elemento-Elemento Casos em que a subconsulta retorna uma única tupla como resultado –não é utilizada nenhuma cláusula de subconsulta neste caso select lista_atributos from tabela1 [,...] where atributo_ou_expressão [=| |>=|<>| != ] (consulta_SQL com um único elemento)

Exemplos Select nome From Funcionários Where salário > (Select salário From Funcionários Where RG = ) select nome, RG from Médicos where RG and especialidade = (select especialidade from Médicos where RG = )

Subconsultas com EXISTS Quantificador existencial do cálculo relacional –testa se um predicado é V ou F na subconsulta –para cada tupla da consulta externa a ser analisada, a subconsulta é executada select lista_atributos from tabela1 [,...] where [NOT] EXISTS(consulta_SQL) Mapeamento para o cálculo relacional select a 1,..., a n from T 1 where EXISTS (select * from T 2 where d > 5 and T 2.x = T 1.c) {t 1.a 1,..., t 1.a n | t 1  T 1   t 2  T 2 (t 2.d > 5  t 2.x = t 1.c) }

Exemplos CálculoSQL {m.nome | m  Médicos   c  Consultas (c.data = ’06/06/13’  c.codm = m.codm)} Select nome From Médicos m Where exists (Select * From consultas Where data = ‘06/06/13’ and codm = m.codm) {f.nome | f  Funcionários  f.depto = ‘adm’    p  Pacientes (p.RG = f.RG)} Select f.nome From Funcionários f Where f.depto = ‘adm’ and not exists (Select * From pacientes Where RG = f.RG)

Relembrando...  t  R (P(t))    t  R (  P(t)) Buscar o nome dos médicos que têm consulta marcada com todos os pacientes {m.nome | m  Médicos   p  Pacientes (  c  Consultas (p.codp = c.codp  c.codm = m.codm))}  {m.nome | m  Médicos    p  Pacientes (   c  Consultas (p.codp = c.codp  c.codm = m.codm))}

Exemplo CálculoSQL {m.nome | m  Médicos    p  Pacientes (   c  Consultas (p.codp = c.codp  c.codm = m.codm))} Select nome From Médicos m Where not exists (Select * From Pacientes p Where not exists (Select * From Consultas c Where c.codp = p.codp and c.codm = m.codm))

Subconsulta na Cláusula FROM Permite a geração de uma tabela derivada a ser utilizada na consulta externa –otimização: filtra linhas e colunas de uma tabela que são desejadas pela consulta externa select lista_atributos from (consulta_SQL) as nome_tabela_derivada Mapeamento para a álgebra relacional select a 1 from (select x from t 1 where d > 5) as t 2 join t 3 on t 3.c = t 2.x  a1 (t 3  X  t2 (  x (  d > 5 (t 1 ))))  = t 3.c = t 2.x

Exemplos ÁlgebraSQL select Medicos.*, C.hora from Medicos join (select codm, hora from Consultas where data = '06/06/13') as C on Médicos.codm = C.codm  Médicos.codm,..., nroa, hora ( (Médicos  X  = Médicos.codm = C.codm  C (  codm, hora (  data = ’06/06/13’ (Consultas))) ) ) select Amb.* from (select nroa, andar from ambulatorios) as Amb join (select nroa from Medicos where cidade = ‘Fpolis') as M_ort on Amb.nroa = M_ort.nroa  Amb.nroa, andar, capacidade (  Amb (  nroa, andar (Ambulatórios))  X  = Amb.nroa = M_ort.nroa  M_ort (  nroa (  cidade = ’Fpolis’ (Médicos))) )