28th Nov 2023 9 minutos de leitura Explicações sobre SQL JOINs: 5 exemplos claros de SQL INNER JOIN para iniciantes Martyna Sławińska sql join join joins Índice Unindo tabelas: Apresentando as operações SQL JOIN Exemplos de SQL INNER JOIN na prática Exemplo 1: Vincular livros a autores Exemplo 2: Atribuir produtos a categorias Exemplo 3: Listar médicos e pacientes com o mesmo primeiro nome Exemplo 4: Combinar pessoas com apartamentos adequados Exemplo 5: unir tabelas de continentes, países e cidades Sua vez de praticar exemplos de INNER JOIN em SQL Está procurando uma explicação clara das junções em SQL? Confira estes cinco exemplos de SQL INNER JOIN! No SQL, INNER JOINs pode ser um pouco difícil para os iniciantes dominarem. Mas, quando você começar a trabalhar com elas, verá que são muito úteis! Vamos discutir cinco exemplos de SQL INNER JOINs. Mas, primeiro, vamos fazer uma rápida revisão do motivo pelo qual os JOINs são importantes. Nos bancos de dados relacionais, os dados são organizados e armazenados em tabelas. Cada tabela representa um tipo específico de informação. Mas, muitas vezes, você precisa analisar dados de diferentes tabelas simultaneamente. E é aí que os JOINs entram em cena. Recomendamos que você pratique a união de tabelas seguindo nosso Cláusulas JOIN em SQL curso interativo. Ele inclui 93 exercícios que abrangem os seguintes tópicos: Tipos de SQL JOIN. JOINs múltiplos. Self-joins, ou seja, união de uma tabela com ela mesma. JOINs não-equi. Então, você está pronto para ver alguns exemplos de INNER JOIN? Vamos começar! Unindo tabelas: Apresentando as operações SQL JOIN Cláusulas JOIN em SQL combinam dados de duas ou mais tabelas com base em valores de coluna correspondentes. Por exemplo, você pode mesclar as informações dos clientes com os pedidos que eles fizeram ou vincular cada produto a seus fornecedores. Cláusulas JOIN em SQL As operações SQL JOIN permitem unir dados de diferentes tabelas e extrair informações significativas para seu caso de uso específico. Confira esta Folha de consulta SQL JOIN para ter uma visão geral dos diferentes tipos de JOINs. Um INNER JOIN em SQL combina linhas de várias tabelas combinando seus valores de coluna comuns. Ao aplicar um INNER JOIN para vincular os dados do cliente aos pedidos correspondentes, você verá uma lista de clientes que fizeram pelo menos um pedido. Além de INNER JOIN, o SQL também oferece outros tipos de junções: LEFT JOIN, RIGHT JOIN, e FULL JOIN. Essas uniões são chamadas de OUTER JOINs. Diferentemente de uma operação INNER JOIN, uma operação OUTER JOIN pode listar linhas de ambas as tabelas, mesmo que não haja correspondência. Vamos dar uma olhada em um exemplo para entender melhor a natureza de SQL INNER JOINs. Aqui está a tabela customers que armazena as informações do cliente: customer_idfirst_namelast_nameemail 1CoryCastillocc@email.com 2ElliePottsep@email.com 3JackGreerjg@email.com E aqui está a tabela orders tabela que armazena todos os pedidos feitos pelos clientes: order_idcustomer_idorder_dateorder_amount 2716/6/2023100.00 2827/7/2023150.00 2918/8/202320.00 A coluna comum (mostrada em rosa) na qual as colunas customers e orders são unidas é a coluna customer_id. Agora, aqui está a consulta: SELECT c.customer_id, c.email, o.order_date, o.order_amount FROM customers AS c INNER JOIN orders AS o ON c.customer_id = o.customer_id; Essa consulta une a tabela customers (com o alias AS c) e a tabela orders (com o pseudônimo AS o). Esses aliases de tabela fornecem uma maneira clara de informar ao banco de dados a tabela de origem de cada coluna (usando a sintaxe table_alias.column_name). Esses aliases são empregados na cláusula ON para estabelecer a coluna para unir tabelas. Também os usamos na instrução SELECT, em que duas colunas são selecionadas da tabela de clientes (c.customer_id and c.email) e outras duas colunas da tabela orders (o.order_date and o.order_amount). Aqui está o resultado da consulta: customer_idemailorder_dateorder_amount 1cc@email.com6/6/2023100.00 2ep@email.com7/7/2023150.00 1cc@email.com8/8/202320.00 Você pode observar que o cliente com o ID 3 não aparece na tabela resultante. Esse cliente específico ainda não fez nenhum pedido; portanto, ele não tem nenhum registro correspondente na tabela orders na tabela. A palavra-chave INNER JOIN é intercambiável com a palavra-chave JOIN. Em outras palavras, quando você usa JOIN, o banco de dados a interpreta como uma notação abreviada para INNER JOIN. Para saber mais sobre INNER JOINs, consulte nosso artigo What Is an Inner Join in SQL? Exemplos de SQL INNER JOIN na prática Vamos explorar alguns exemplos do SQL INNER JOIN feitos sob medida para iniciantes. Antes de começar a ver os exemplos, confira este artigo sobre como praticar Cláusulas JOIN em SQL. Exemplo 1: Vincular livros a autores Você tem duas tabelas que armazenam informações sobre livros e autores. Junte essas tabelas para ver a lista de livros e seus autores. Aqui está a tabela books tabela: book_idtitlepublication_yearauthor_id 1Frankenstein181822 2The Time Machine189523 3The Martian201124 42001: A Space Odyssey196825 5Dune196526 A coluna book_id identifica cada livro de forma exclusiva. E a coluna author_id atribui um autor a cada livro. E aqui está a authors tabela: author_idauthor_name 22Mary Shelley 23H. G. Wells 24Andy Weir 25Arthur C. Clarke 26Frank Herbert A coluna author_id identifica exclusivamente cada autor. E a coluna author_name armazena os nomes completos dos autores. Se quiser ver os títulos dos livros e os nomes dos autores, você pode unir essas tabelas com base em sua coluna comum (a coluna author_id em ambas as tabelas). Basta selecionar title from books e author_name from authors: SELECT b.title, a.author_name FROM books AS b INNER JOIN authors AS a ON b.author_id = a.author_id; Esta é a tabela resultante: titleauthor_name FrankensteinMary Shelley The Time MachineH. G. Wells The MartianAndy Weir 2001: A Space OdysseyArthur C. Clarke DuneFrank Herbert Observe que a cada livro é atribuído um autor e a cada autor é atribuído um livro, pois não há valores duplicados na coluna comum author_id. Examine o próximo exemplo para ver o que acontece se a coluna comum tiver valores duplicados. Exemplo 2: Atribuir produtos a categorias Você tem duas tabelas que armazenam produtos e categorias de produtos. Junte-se a essas tabelas para ver a lista de produtos com suas categorias. Aqui está a tabela products tabela: product_idproduct_namecategory_id 1Apple22 2Orange22 3Potato23 4Carrot23 5Chocolate24 A coluna product_id identifica cada produto de forma exclusiva. E a coluna category_id atribui uma categoria a cada produto. E aqui está a categories tabela: category_idcategory_name 22Fruits 23Vegetables 24Snacks A coluna category_id identifica exclusivamente cada categoria. E a coluna category_name armazena os nomes completos das categorias. Se quiser ver os produtos e suas categorias, você pode unir essas tabelas com base em sua coluna comum, que é a coluna category_id. Aqui está a consulta: SELECT p.product_name, c.category_name FROM products AS p INNER JOIN categories AS c ON p.category_id = c.category_id; Esta é a tabela resultante: product_namecategory_name AppleFruits OrangeFruits PotatoVegetables CarrotVegetables ChocolateSnacks As categorias com IDs 22 e 23 são atribuídas a dois produtos cada; seus nomes aparecem duas vezes na tabela de saída. Exemplo 3: Listar médicos e pacientes com o mesmo primeiro nome Você tem duas tabelas que armazenam informações sobre médicos e pacientes. Junte-se a essas tabelas para ver a lista de médicos e pacientes que compartilham o mesmo primeiro nome. Aqui está a tabela doctors tabela: doctor_idfirst_namelast_name 1SamanthaMonroe 2MelvinFerrell 3AlbieBlake 4RoseBernard 5LouiPeterson A coluna doctor_id identifica cada médico de forma exclusiva. As outras duas colunas armazenam o nome e o sobrenome dos médicos. E aqui está a patients tabela: patient_idfirst_namelast_name 23BenWoodward 24SamanthaThomson 25KateDonovan 26AlbieVasquez 27LouiChen A coluna patient_id identifica exclusivamente cada paciente. As outras duas colunas armazenam o nome e o sobrenome dos pacientes. Se quiser ver a lista de médicos e pacientes que compartilham o mesmo primeiro nome, você pode unir essas tabelas com base na coluna first_name. SELECT d.*, p.* FROM doctors AS d INNER JOIN patients AS p ON d.first_name = p.first_name; Observe que d.* define todas as colunas da tabela doctors e p.* define todas as colunas da tabela patients da tabela. Esta é a tabela resultante: doctor_idfirst_namelast_namepatient_idfirst_namelast_name 1SamanthaMonroe24SamanthaThomson 3AlbieBlake26AlbieVasquez 5LouiPeterson27LouiChen Graças à operação INNER JOIN, você pode listar apenas os pares de médico e paciente em que os primeiros nomes são iguais. Exemplo 4: Combinar pessoas com apartamentos adequados Você tem duas tabelas que armazenam informações sobre apartamentos disponíveis para aluguel e pessoas procurando apartamentos que se encaixem em sua faixa de preço. Junte essas tabelas para ver quais apartamentos podem ser alugados por qual pessoa. Aqui está a tabela apartments tabela: apartment_idrent 11000 2700 3500 A coluna apartment_id identifica exclusivamente cada apartamento. E a coluna rent armazena o valor do aluguel mensal. E aqui está a persons tabela: person_idemailmax_rent 23ab@email.com900 24cd@email.com600 25ef@email.com3000 A coluna person_id identifica exclusivamente cada pessoa que está procurando um apartamento para alugar. A coluna email armazena os e-mails dessas pessoas e a coluna max_rent armazena o valor máximo de aluguel mensal que elas podem pagar pelo apartamento. Se quiser ver quais apartamentos podem ser alugados por qual pessoa, você pode unir essas tabelas com base nas colunas rent e max_rent: SELECT p.person_id, p.email, a.apartment_id, a.rent AS apartment_rent FROM apartments AS a INNER JOIN persons AS p ON a.rent < p.max_rent; Aqui, a correspondência deve ser feita entre a coluna de aluguel da tabela apartments e a coluna max_rent da tabela persons tabela, onde rent < max_rent. Essa é a tabela resultante: person_idemailapartment_idapartment_rent 25ef@email.com11000 23ab@email.com2700 25ef@email.com2700 23ab@email.com3500 24cd@email.com3500 25ef@email.com3500 Ao usar a cláusula ON com a condição que contém o sinal <, várias linhas da apartments foram atribuídas a várias linhas da tabela persons tabela, e vice-versa. E você pode ver quais apartamentos são adequados para alugar para quais pessoas. Exemplo 5: unir tabelas de continentes, países e cidades Desta vez, você tem três tabelas que armazenam informações sobre continentes, países e cidades. Junte essas tabelas para saber qual cidade pertence a qual país e qual país pertence a qual continente. Aqui está a tabela continents que armazena todos os continentes: continent_idcontinent_name 1Asia 2Africa 3North America 4South America 5Antarctica 6Europe 7Australia A coluna continent_id identifica cada continente de forma exclusiva. E a coluna continent_name armazena seu nome completo. Aqui está a tabela countries tabela que armazena os países selecionados: country_idcountry_namecontinent_id 23United States3 24Brazil4 25South Africa2 26Japan1 27Poland6 A coluna country_id identifica exclusivamente cada país. A coluna country_name armazena seu nome completo. E a coluna continent_id armazena o continente em que o país está localizado. E aqui está a tabela cities tabela que armazena as cidades selecionadas: city_idcity_namecountry_id 33Rio de Janeiro24 34New York23 35Tokyo26 36Warsaw27 37Cape Town25 A coluna city_id identifica exclusivamente cada cidade. A coluna city_name armazena seu nome completo. E a coluna country_id armazena o país onde a cidade está localizada. Se quiser ver quais cidades, países e continentes estão juntos, você pode unir essas três tabelas com base em suas colunas comuns: SELECT cont.continent_name, coun.country_name, ci.city_name FROM continents AS cont INNER JOIN countries AS coun ON cont.continent_id = coun.continent_id INNER JOIN cities AS ci ON coun.country_id = ci.country_id; A tabela continent é unida à tabela countries em sua coluna comum (continent_id). E a tabela countries é unida à tabela cities em sua coluna comum (country_id). Esta é a tabela resultante: continent_namecountry_namecity_name AsiaJapanTokyo AfricaSouth AfricaCape Town North AmericaUnited StatesNew York South AmericaBrazilRio de Janeiro EuropePolandWarsaw As três tabelas são unidas em suas colunas comuns e o comando SELECT lista os nomes de continente, país e cidade com base na união entre as colunas de ID. Confira este artigo sobre junção de três ou mais tabelas no SQL para obter mais exemplos de junções de várias tabelas. Sua vez de praticar exemplos de INNER JOIN em SQL Ao longo deste artigo, nos aprofundamos nas complexidades do INNER JOIN em SQL, desde os conceitos básicos até cenários mais avançados. Usamos várias condições JOIN e até unimos três tabelas. Como vimos, o poder do INNER JOIN está em sua capacidade de conectar conjuntos de dados sem problemas, o que nos permite extrair insights valiosos. Você precisa de mais exemplos de SQL INNER JOIN? Experimente todos os tipos de JOINs seguindo nosso curso sobre Cláusulas JOIN em SQL que mencionamos anteriormente. Você terá toda a prática que precisa para se sentir confortável ao escrever JOINs. Boa sorte! Tags: sql join join joins