Você está na página 1de 6

13/9/2010

SQL Completo
Relacionamentos e Vises

Relacionamentos no SQL
Informaes relacionadas entre si Em geral entre diferentes tabelas Geralmente possuem campos em comum Parmetro JOIN e suas variaes SELECT ... FROM T1 JOIN T2 ON T1.FK = T2.PK SELECT ... FROM T1 JOIN T2 USING Chave Compatibilidade com bancos de dados

Inner join
Join padro Produto cartesiano entre as tabelas Combina todas as linhas da primeira tabela com todas as linhas da segunda, que satisfao as condies das chaves

13/9/2010

Inner join
SELECT * FROM PESSOAS JOIN VEICULOS ON PESSOAS.CPF = VEICULOS.CPF
Tabela PESSOAS NOME Fernando Guilherme CPF 111.111.111-11 222.222.222-22 ESTADO PR SP Tabela VEICULOS CPF 111.111.111-11 NULL VEICULO Carro Carro PLACA SB-0001 SB-0002

Tabela RESULTADO NOME Fernando CPF 111.111.111-11 ESTADO PR CPF 111.111.111-11 VEICULO Carro PLACA SB-0001

Equi join
Similar ao Inner join Chaves de mesmo nome entre as tabelas SELECT * FROM PESSOAS JOIN VEICULOS USING (CPF)
Tabela PESSOAS NOME Fernando Guilherme CPF 111.111.111-11 222.222.222-22 ESTADO PR SP Tabela VEICULOS CPF 111.111.111-11 NULL VEICULO Carro Carro PLACA SB-0001 SB-0002

Tabela RESULTADO NOME Fernando CPF 111.111.111-11 ESTADO PR VEICULO Carro PLACA SB-0001

Non equi join


Relacionamento sem um campo em comum SELECT P.NOME, P.SALARIO, S.FAIXA FROM PESSOAS P INNER JOIN SALARIOS S ON P.SALARIO BETWEEN S.INICIO AND S.FIM
Tabela PESSOAS NOME Fernando Guilherme CPF 111.111.111-11 222.222.222-22 ESTADO PR SP SALARIO 1500 2500 Tabela SALARIOS FAIXA Analista Jnior Analista Pleno INICIO 1000 2001 FIM 2000 3000

Tabela RESULTADO NOME Fernando Guilherme SALARIO 1500 2500 FAIXA Analista Jnior Analista Pleno

13/9/2010

Outer join, Left join, Left outer join


Linhas que no satisfazem a condio de unio Left: Linhas da primeira tabela cujo campo de condio no satisfao a unio de tabelas SELECT * FROM PESSOAS LEFT JOIN VEICULOS ON PESSOAS.CPF = VEICULOS.CPF
Tabela PESSOAS NOME Fernando Guilherme CPF 111.111.111-11 222.222.222-22 ESTADO PR SP Tabela VEICULOS CPF 111.111.111-11 NULL VEICULO Carro Carro PLACA SB-0001 SB-0002

Tabela RESULTADO NOME Fernando Guilherme CPF 111.111.111-11 222.222.222-22 ESTADO PR SP CPF 111.111.111-11 NULL VEICULO Carro NULL PLACA SB-0001 NULL

Right join, Right outer join


Similar ao Left join Right: Linhas da segunda tabela cujo campo de condio no satisfao a unio de tabelas SELECT * FROM PESSOAS RIGHT JOIN VEICULOS ON PESSOAS.CPF = VEICULOS.CPF
Tabela PESSOAS NOME Fernando Guilherme CPF 111.111.111-11 222.222.222-22 ESTADO PR SP Tabela VEICULOS CPF 111.111.111-11 NULL VEICULO Carro Carro PLACA SB-0001 SB-0002

Tabela RESULTADO NOME Fernando NULL CPF 111.111.111-11 NULL ESTADO PR NULL CPF 111.111.111-11 NULL VEICULO Carro Carro PLACA SB-0001 SB-0002

Full outer join


Combinao de Left join e Right join Linhas da primeira e segunda tabela cujos campos de condio no satisfaam a unio de tabelas

13/9/2010

Full outer join


SELECT * FROM PESSOAS FULL JOIN VEICULOS ON PESSOAS.CPF = VEICULOS.CPF
Tabela PESSOAS NOME Fernando Guilherme CPF 111.111.111-11 222.222.222-22 ESTADO PR SP Tabela VEICULOS CPF 111.111.111-11 NULL VEICULO Carro Carro PLACA SB-0001 SB-0002

Tabela RESULTADO NOME Fernando Guilherme NULL CPF 111.111.111-11 222.222.222-22 NULL ESTADO PR SP NULL CPF 111.111.111-11 NULL NULL VEICULO Carro NULL Carro PLACA SB-0001 NULL SB-0002

Self join
Unio da tabela com ela mesma SELECT A.NOME, B.NOME AS INDICADO_POR FROM PESSOAS A JOIN PESSOAS B ON A.INDICADO = B.CPF
Tabela PESSOAS NOME Fernando Guilherme CPF 111.111.111-11 222.222.222-22 ESTADO PR SP INDICADO NULL 111.111.111-11

Tabela RESULTADO NOME Guilherme INDICADO_POR Fernando

Vises
Relao que no faz parte do modelo lgico Acessvel ao usurio como uma relao virtual Otimizao de espao em disco Centralizao de cdigo Facilidade de manuteno de expresses SQL
Tabela PESSOAS

Viso A

NOME Fernando Guilherme Fbio

CPF 111.111.111-11 222.222.222-22 333.333.333-33

ESTADO PR SP SP

SALARIO 1500 2500 2700

Viso B

13/9/2010

Criando uma viso


AM6

CREATE VIEW Nome AS ExpressoSQL ALTER VIEW Nome Propriedade


Excluso e nova criao (substituio)

DROP VIEW Nome


Apenas a estrutura da viso removido Os dados permanecem intactos em suas respectivas tabelas

Aulas prticas e manuais on-line

Assista agora as aulas prticas, que apresentam o uso dos comandos abordados nesta aula terica. Manuais dos principais bancos de dados esto disponveis na seo Links do curso de SQL.

Clique aqui para visualizar as aulas prticas disponveis

Slide 13 AM6 Alguns bancos fornecem comandos de substituio (REPLACE) para facilitar a alterao da expresso SQL das vises, uma vez que suas excluses no afetam os dados.
Andr Milani; 14/4/2010

Você também pode gostar