A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SQL – DML Consultas envolvendo relacionamentos entre tabelas

Apresentações semelhantes


Apresentação em tema: "SQL – DML Consultas envolvendo relacionamentos entre tabelas"— Transcrição da apresentação:

1 SQL – DML Consultas envolvendo relacionamentos entre tabelas
select lista_atributos from lista_tabelas [where condição] Mapeamento para a álgebra relacional select a1, ..., an from t1, ..., tm where c  a1, ..., an ( c (t1 X ... X tm))

2 (Pacientes X Consultas)
Exemplos Álgebra SQL (Pacientes X Consultas) Select * From Pacientes, Consultas  RG, nome, data ( hora > 12:00 (Pacientes X Consultas)  Pacientes.codp = Consultas.codp ) Select RG, nome, data From Pacientes,Consultas Where hora > ‘12:00’ and Pacientes.codp = Consultas.codp  f1.nome ( f2.nome = ‘Marcelo’  f1.salário > f2.salário ( ( f1 (Funcionários)) X ( f2 (Funcionários)) ) Select f1.nome From Funcionários f1, Funcionários f2 Where f2.nome = ‘Marcelo’ and f1.salário > f2.salário

3 Junção Sintaxe Mapeamento para a álgebra relacional
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 t1 join t2 on t1.x > t2.x where c a1, ..., an ( c (t1  X t2))  = t1.x > t2.x

4 Exemplos Álgebra SQL  = Médicos.codm = Consultas.codm
(Pacientes  X Consultas)  = Pacientes.codp = Consultas.codp Select * From Pacientes join Consultas on Pacientes.codp = Consultas.codp nome ( data = ’05/13/03’ (Médicos  X Consultas) )  = Médicos.codm = Consultas.codm Select nome From Médicos join Consultas on Médicos.codm = Consultas.codm Where data = ‘05/13/03’

5 Junção Natural Sintaxe Mapeamento para a álgebra relacional
select lista_atributos from tabela1 natural join tabela2 [natural join tabela3 ...] [where condição] Mapeamento para a álgebra relacional select a1, ..., an from t1 natural join t2 where c a1, ..., an ( c (t t2))

6 (Pacientes Consultas)
Exemplos Álgebra SQL (Pacientes Consultas) Select * From Pacientes natural join Consultas nome ( data = ’05/13/03’ (Médicos Consultas) ) Select nome From Médicos natural join Consultas Where data = ‘05/13/03’ Observação SQL-Server não implementa o natural join

7 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 on t1.x > t2.x where c a1, ..., an ( c (t1  X t2))  = t1.x > t2.x

8 Exemplos Álgebra SQL  = Médicos.codm = Consultas.codm
(Pacientes  X Consultas)  = Pacientes.codp = Consultas.codp Select * From Pacientes left join Consultas on Pacientes.codp = Consultas.codp nome ( data = ’05/13/03’ (Consultas  X Médicos))  = Médicos.codm = Consultas.codm Select nome From Médicos right join Consultas on Médicos.codm = Consultas.codm Where data = ‘05/13/03’

9 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)

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

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

12 Diferença/Intersecção de Tabelas
Exige tabelas compatíveis Exemplos Observação SQL Server não implementa estas operações Álgebra SQL 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))  Select RG From Médicos intersect


Carregar ppt "SQL – DML Consultas envolvendo relacionamentos entre tabelas"

Apresentações semelhantes


Anúncios Google