Beruflich Dokumente
Kultur Dokumente
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