7 sql3

301 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
301
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

7 sql3

  1. 1. SQL – DML • Consultas envolvendo mais de uma tabela select lista_atributos from tabela1, ..., tabelam [where condição] • Mapeamento para a álgebra relacional select a1, ..., an from tab1, ..., tabm π a1, ..., an (σ c (tab1 X ... X tabm)) where c Exemplos Álgebra SQL Select * (Pacientes X Consultas) From Pacientes, Consultas Select CPF, nome, dataπ CPF, nome, data ( From Pacientes,Consultasσ hora > 12:00 (Pacientes X Consultas) Where hora > ‘12:00’ and Pacientes.codp =∧ Pacientes.codp = Consultas.codp ) Consultas.codpπ m2.nome ( Select m2.nomeσ m1.nome = ‘Joao’ ∧ m1.especialidade = From Médicos m1, Médicosm2.especialidade ( m2(ρ m1 (Médicos)) X Where m1.nome = ‘João’(ρ m2 (Médicos)) and m1.especialidade =)) m2.especialidade 1
  2. 2. Junção• Sintaxe select lista_atributos from tabela1 [inner] join tabela2 on condição_junção [join tabela3 on ...] [where condição]• Mapeamento para a álgebra relacional select a1, ..., an from tab1 join tab2 πa1, ..., an (σ c (tab1 θ X tab2)) on tab1.x > tab2.x θ = tab1.x > tab2.x where c Exemplos Álgebra SQL Select * From Pacientes join (Pacientes θ X Consultas) Consultas on θ = Pacientes.codp = Consultas.codp Pacientes.codp = Consultas.codp Select nomeπnome (σ data = ’2006/11/13’ From Médicos join (Médicos θ X Consultas) ) Consultas on Médicos.codm θ = Médicos.codm = Consultas.codm = Consultas.codm Where data = ‘2006/11/13’ 2
  3. 3. Junção Natural • Sintaxe select lista_atributos from tabela1 natural join tabela2 [natural join tabela3 ...] [where condição] • Mapeamento para a álgebra relacionalselect a1, ..., anfrom tab1 natural join tab2 πa1, ..., an (σc (tab1 tab2))where c Exemplos Álgebra SQL Select * (Pacientes Consultas) From Pacientes natural join Consultas Select nomeπnome (σ data = ’2006/11/13’ From Médicos natural join (Médicos Consultas) Consultas ) Where data = ‘2006/11/13’ 3
  4. 4. Junções Externas (Não Naturais)• Sintaxe select lista_atributos from tabela1 left|right|full [outer] join tabela2 on condição_junção [join tabela3 on ...] [where condição]• Mapeamento para a álgebra relacional select a1, ..., an from t1 left join t2 πa1, ..., an (σ c (t1 θ X t2)) on t1.x > t2.x θ = t1.x > t2.x where c Exemplos Álgebra SQL Select * From Pacientes left join (Pacientes θ X Consultas) Consultas on θ = Pacientes.codp = Consultas.codp Pacientes.codp = Consultas.codp Select nomeπnome (σ data = ’06/11/13’ From Médicos right join (Consultas θ X Médicos)) Consultas on Médicos.codm θ = Médicos.codm = Consultas.codm = Consultas.codm Where data = ‘06/11/13’ 4
  5. 5. ExercíciosDefina cada uma das seguintes buscas através de um produto, de uma junção(e de uma junção natural, quando possível). Quando necessário, utilizarjunção externa:1) nome e CPF dos médicos que também são pacientes do hospital2) pares (código, nome) de funcionários e de médicos que residem na mesma cidade3) código e nome dos pacientes com consulta marcada para horários após às 14 horas4) número e andar dos ambulatórios utilizados por médicos ortopedistas5) nome e CPF dos pacientes que têm consultas marcadas entre os dias 14 e 16 de junho de 20066) nome e idade dos médicos que têm consulta com a paciente Ana7) código e nome dos médicos que atendem no mesmo ambulatório do médico Pedro e que possuem consultas marcadas para dia 14/06/20068) nome, CPF e idade dos pacientes que têm consultas marcadas com ortopedistas para dias anteriores ao dia 169) nome e salário dos funcionários que moram na mesma cidade do funcionário Carlos e possuem salário superior ao dele10) dados de todos os ambulatórios e, para aqueles ambulatórios onde médicos dão atendimento, exibir também os seus códigos e nomes11) CPF e nome de todos os médicos e, para aqueles médicos com consultas marcadas, exibir os CPFs e nomes dos seus pacientes e as datas das consultas 5

×