Uma pequena introdução sobre o inner join em SQL

Olá galera,

Recentemente fiquei pensando em um artigo que fosse útil e, acompanhando as aulas da faculdade, percebi as dificuldades do pessoal em assimilar o conceito sobre do Inner Join em banco de dados.

O Inner Join  tem como objetivo aglutinar duas ou mais tabelas mediante atributos comuns que estão presentes nas mesmas, onde para realizarmos esta junção, utilizamos as chaves primárias / estrangeiras.

Dentre as vantagens de se utilizar o Inner Join, podemos considerar:

  1. Sua sintaxe ser mais organizada e facíl de compreender;
  2. Facilidade para se achar o melhor plano de ação para realizar consultas.

Sintaxe:

select <campos> from <tabela 1>
inner join <tabela 2> on <campo tabela 1> = <campo tabela 2>

Para facilitar o entendimento, vamos utilizar um modelo do Northwind para exemplificar alguns casos:

No modelo acima, vamos supor em fazer uma junção da tabela Category com a Product, para retornar no resultado alguns campos como CategoryID, CategoryNameDescription, ProductID, ProductName e UnitPrice, onde para realizar a junção da tabela vamos utilizar a chave primária CategoryID da tabela Category com a chave estrangeira CategoryID da tabela Product.

Podemos montar o join de duas maneiras e ambas retornarão o mesmo resultado, mas acredito que o primeiro as vezes seja até o melhor a ser utilizado para auxiliar no entendimento de views grandes e complexas.

Bem vamos lá:

select
Category.CategoryID,Category.CategoryName,Category.Description,
Product.ProductID,Product.ProductName,Product.UnitPrice
from Category
inner join Product on (Category.CategoryID = Product.CategoryID)

Ou

select
c.CategoryID, c.CategoryName, c.Description, p.ProductID, p.ProductName, p.UnitPrice
from Category c
inner join Product p on (c.CategoryID = p.CategoryID)

A diferença das duas queries que montei acima é que na primeira utilizamos o nome da tabela seguido do ponto mais o campo desejado e no segundo exemplo eu utilizei um álias que coloquei logo após as tabelas.

Complementando estas queries, podemos acrescentar a cláusula where no final para realizar uma filtragem dos registros que vão ser retornados da base de dados, onde no exemplo abaixo apenas vou retornar os registos que o preço unitário for maior do que 200.

select
Category.CategoryID,Category.CategoryName,Category.Description,
Product.ProductID,Product.ProductName,Product.UnitPrice
from Category
inner join Product on (Category.CategoryID = Product.CategoryID)
where Product.UnitPrice > 200

Bem galera, espero que o artigo seja realmente útil :)
Se alguém tiver algo a complementar, deixe seu comentário!

Um grande abraço a todos!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 53 other followers