120 likes | 247 Views
SQL – DML. Consultas envolvendo relacionamentos entre tabelas select lista_atributos from lista_ tabelas [ where condição ] Mapeamento para a álgebra relacional. select a 1 , ..., a n from t 1 , ..., t m where c. a1, ..., an ( c (t 1 X ... X t m ) ). Exemplos. Junção. Sintaxe
E N D
SQL – DML • Consultas envolvendo relacionamentos entre tabelas selectlista_atributos from lista_tabelas [wherecondição] • Mapeamento para a álgebra relacional select a1, ..., an from t1, ..., tm where c a1, ..., an ( c(t1 X ... X tm))
Junção • Sintaxe selectlista_atributos fromtabela1 [inner]join tabela2 on condição_junção [join tabela3 on...] [wherecondiçã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
Junção Natural • Sintaxe selectlista_atributos fromtabela1 naturaljoin tabela2 [naturaljoin tabela3 ...] [wherecondição] • Mapeamento para a álgebra relacional select a1, ..., an from t1natural join t2 where c • a1, ..., an ( c(t1 t2))
Exemplos • Observação • SQL-Server não implementa o natural join
Junções Externas (Não Naturais) • Sintaxe selectlista_atributos fromtabela1 left|right|full [outer] join tabela2 on condição_junção [join tabela3 on...] [wherecondição] • Mapeamento para a álgebra relacional select a1, ..., an from t1left join t2 on t1.x > t2.x where c • a1, ..., an ( c(t1 X t2)) = t1.x > t2.x
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 a relação de pertinência ou não-pertinência elemento-conjunto selectlista_atributos fromtabela1 [...] whereatributo_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
Exige tabelas compatíveis Exemplos Observação SQL Server não implementa estas operações Diferença/Intersecção de Tabelas