Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SQLJoin:Entendacomofuncionaoretornodosdados
www.devmedia.com.br
[versoparaimpresso]
Linkoriginal:http://www.devmedia.com.br/articles/viewcomp.asp?
comp=31006
Muitosdesenvolvedorestemadificuldadedesaberqualresultado
retornadodecadajoinnoSQL.Porcontadisso,esseartigofoi
desenvolvidocombaseemestudoseconsultasnaprtica.AFigura1
vainosajudaraentenderosresultadosobtidosdecadajoin.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
1/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura1JoinsemSQL.
Emcimadessafigura,vamoscriaraestruturaerealizarasconsultas
usandocadajoin.
Paraisso,oprimeiropassocriarastabelasAeB,conformemostrao
cdigodaListagem1.
Maisateno:estepostnotemofocodemelhoresprticas,
normalizaoetc.porisso,serocriadasapenasduastabelassimples
comapenasumcampochamadonomeparavisualizaroresultadode
cadajoin.
Listagem1Criandoastabelas.
CREATETABLETabelaA(
Nomevarchar(50)NULL
)
GO
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
2/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
CREATETABLETabelaB(
Nomevarchar(50)NULL
)
JosegundopassoincluiainserodevaloresnastabelasAeB.A
Listagem2exibeosvaloresqueseroincludosnastabelasAeB.
Listagem2Inclusodedadosnastabelas.
INSERTINTOTabelaAVALUES('Fernanda')
INSERTINTOTabelaAVALUES('Josefa')
INSERTINTOTabelaAVALUES('Luiz')
INSERTINTOTabelaAVALUES('Fernando')
INSERTINTOTabelaBVALUES('Carlos')
INSERTINTOTabelaBVALUES('Manoel')
INSERTINTOTabelaBVALUES('Luiz')
INSERTINTOTabelaBVALUES('Fernando')
Agora,vamosanalisarcadaumdosjoins.
Inner Join
Usandooinnerjoin,conformemostraaFigura2,teremoscomo
resultadotodososregistroscomunsnasduastabelas.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
3/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura2UsandoInnerJoin.
ParaissoexecutaremososcomandospresentesnaListagem3.
Listagem3UsandoInnerJoin
SELECTa.Nome,b.Nome
FROMTabelaAasA
INNERJOINTabelaBasB
ona.Nome=b.Nome
Naprtica,oresultadoserconformeaFigura3.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
4/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura3RetornodoInnerJoin.
Left Join
UsandooLeftJoin,conformemostraaFigura4,teremoscomo
resultadotodososregistrosqueestonatabelaA(mesmoqueno
estejamnatabelaB)eosregistrosdatabelaBquesocomunsna
tabelaA.Paraentendermelhor,executaremosocdigopresentena
Listagem4.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
5/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura4UsandoLeftJoin
Listagem4UsandoLeftJoin
SELECTa.Nome,b.Nome
FROMTabelaAasA
LEFTJOINTabelaBasB
ona.Nome=b.Nome
EnaprticaoresultadoserconformeaFigura5.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
6/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura5RetornodoLeftJoin.
Right Join
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
7/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
UsandooRightJoin,conformemostraaFigura6,teremoscomo
resultadotodososregistrosqueestonatabelaB(mesmoqueno
estejamnatabelaA)eosregistrosdatabelaAquesocomunsna
tabelaB.Paravermosissonaprtica,executaremososcomandosda
Listagem5.
Figura6UsandoRightJoin
Listagem5UsandoRightJoin
SELECTa.Nome,b.Nome
FROMTabelaAasA
RIGHTJOINTabelaBasB
ona.Nome=b.Nome
OresultadodessescomandoseromesmoapresentadonaFigura7.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
8/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura7RetornodoRightJoin.
Outer Join
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
9/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
UsandooOuterJoin(conhecidoporFullOuterJoinouFullJoin),
conformemostraaFigura8,teremoscomoresultadotodosos
registrosqueestonatabelaAetodososregistrosdatabelaB.Na
prtica,vocdeveexecutarosmesmoscomandopresentesna
Listagem6.
Figura8UsandoFullOuterJoineFullJoin
Listagem6UsandoFullOuterJoinouFullJoin
SELECTa.Nome,b.Nome
FROMTabelaAasA
FULLOUTERJOINTabelaBasB
ona.Nome=b.Nome
SELECTa.Nome,b.Nome
FROMTabelaAasA
FULLJOINTabelaBasB
ona.Nome=b.Nome
EnaprticaoresultadoserconformeaFigura9.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
10/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
11/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura9RetornodoFullOuterJoinouFullJoin
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
12/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura10UsandoLeftExcludingJoin
Listagem7UsandoLeftExcludingJoin
SELECTa.Nome,b.Nome
FROMTabelaAasA
LEFTJOINTabelaBasB
ona.Nome=b.Nome
WHEREb.Nomeisnull
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
13/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura11RetornodoLeftExcludingJoin
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
14/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura12UsandoRightExcludingJoin.
Listagem8UsandoRightExcludingJoin.
SELECTa.Nome,b.Nome
FROMTabelaAasA
RIGHTJOINTabelaBasB
ona.Nome=b.Nome
WHEREa.Nomeisnull
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
15/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura13RetornodoRightExcludingJoin.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
16/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura14UsandoOuterExcludingJoin
Paraisso,executaremosocomandodaListagem9.
Listagem9UsandoOuterExcludingJoin
SELECTa.Nome,b.Nome
FROMTabelaAasA
FULLOUTERJOINTabelaBasB
ona.Nome=b.Nome
WHEREa.Nomeisnullorb.Nomeisnull
SELECTa.Nome,b.Nome
FROMTabelaAasA
FULLJOINTabelaBasB
ona.Nome=b.Nome
WHEREa.Nomeisnullorb.Nomeisnull
EnaprticaoresultadoserconformeaFigura15.
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
17/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
Figura15RetornodoOuterExcludingJoin
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
18/19
06/07/2016
SQLJoin:Entendacomofuncionaoretornodosdados
FernandaSallai
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=31006
19/19