Database
 sql >> Base de Dados >  >> RDS >> Database

Como usar INNER JOIN em SQL


Neste artigo, aprenderemos sobre o conceito INNER JOIN e como usá-lo em SQL com a cláusula WHERE.

O que é INNER JOIN em SQL?

Inner Join é um tipo de join no SQL. Inner Join no SQL é uma junção amplamente usada. Essa junção retorna apenas as linhas que são comuns em ambas as tabelas. A junção interna é usada para unir duas tabelas.

Sintaxe de Inner Join no SQL:
SELECT table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 FROM TABLE1 INNER JOIN TABLE2 ON table1.column = table2.column;

Table1.column =table2.column é a coluna comum que mantém o relacionamento pai-filho entre essas duas tabelas.

Existem alguns passos que temos que usar no Inner Join na consulta SQL:

1. Crie um novo banco de dados ou use um banco de dados existente selecionando o banco de dados usando a palavra-chave USE seguida do nome do banco de dados.

2. Crie uma nova tabela dentro do banco de dados selecionado, ou você pode usar uma tabela já criada.

3. Se a tabela for recém-criada, insira os registros no banco de dados recém-criado usando a consulta INSERT.

4. Visualize os dados inseridos usando a consulta SELECT sem a consulta Inner Join.

5 Agora, estamos prontos para usar o Inner Join nas consultas SQL.

Etapa 1:crie um novo banco de dados ou use um banco de dados já criado.

Já criei um banco de dados. Usarei meu nome de banco de dados criado existente, Empresa.
USE Company;

Empresa é o nome do banco de dados.

Quem não criou um banco de dados segue a consulta abaixo para criar o banco de dados:
CREATE DATABASE database_name;

Após criar o banco de dados, selecione o banco de dados usando a palavra-chave USE seguida do nome do banco de dados.

Etapa 2:crie uma nova tabela ou use uma tabela já existente:

Já criei uma tabela. Usarei a tabela existente chamada Employees and Manager, pois estamos executando a consulta Inner Join.

Para criar a nova tabela, siga a sintaxe CREATE TABLE abaixo:
CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

Etapa 3:insira os registros na tabela recém-criada usando a consulta INSERT

Use a sintaxe abaixo para inserir novos registros na tabela:
INSERT INTO table_name VALUES(value1, value2, value3);

Etapa 4: Visualize os registros usando a consulta SELECT.

Visualize os registros da tabela usando a seguinte sintaxe:
SELECT * FROM table_name;

A consulta a seguir exibirá os registros de Funcionários.
SELECT * FROM Employees;

A saída da consulta SELECT acima é:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
1003 NIQUIL VANI 50500 JAIPUR FMW 2
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA QUERER 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE 4
5002 SANKET CHAUHAN 70.000 HYDERABAD JAVA 3
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6001 RAHUL NIKAM 54500 BANGALORE TESTE 4
6002 ATISH JADHAV 60500 BANGALORE C# 5
6003 NIKITA INGALE 65.000 HYDERABAD ORACLE 1

A consulta a seguir exibirá os registros do Manager.
SELECT * FROM Manager;

A saída da consulta SELECT acima é:
Managerid manager_name manager_department
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TESTE
5 Akash Kadam C#

A consulta a seguir exibirá os registros do Laptop.
SELECT * FROM Laptop;

A saída da consulta SELECT acima é:
LAPTOPID NOME EMPREGADO
101 DELL NULO
102 HP 1002
103 LENOVO NULO
104 HP 3003
105 DELL 4002
106 LENOVO 4003
107 DELL 5001
108 HP NULO
109 DELL NULO
110 HP NULO
111 LENOVO 2002
112 LENOVO 6003
113 HP 1003

Etapa 5:estamos prontos para usar o INNER JOIN nas consultas

Vamos entender o Inner Join com a ajuda de exemplos.

Exemplo 1: Escreva uma consulta para exibir o ID do funcionário, nome, sobrenome, salário, cidade da tabela do funcionário e ID do gerente e nome do gerente da tabela do gerente usando a junção interna.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, E.CITY, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID;

Na consulta acima, buscamos id do funcionário, nome, sobrenome, salário, cidade da tabela do funcionário e id do gerente, nome do gerente da tabela do gerente, onde a coluna id do gerente da tabela dos funcionários é igual à coluna id do gerente da tabela do gerente. A consulta retornará todos os registros de correspondência de ambas as tabelas. O ID do gerente é uma coluna comum entre as duas tabelas. E é um nome alternativo para a tabela do funcionário, enquanto M é para a tabela do gerente. A coluna id do gerente funciona como uma chave estrangeira na tabela do funcionário. O ID do gerenciador funciona como a chave primária na tabela do gerenciador, que cria um relacionamento pai-filho entre as duas tabelas.

A saída da consulta acima é:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
6003 NIKITA INGALE 65.000 HYDERABAD ORACLE 1
1003 NIQUIL VANI 50500 JAIPUR FMW 2
2002 BHAVESH JAIN 65500 PUNE FMW 2
3002 ANUJA QUERER 50500 JAIPUR FMW 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3
5002 SANKET CHAUHAN 70.000 HYDERABAD JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE 4
6001 RAHUL NIKAM 54500 BANGALORE TESTE 4
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5

Os registros são exibidos em ordem crescente por ID de gerente padrão.

Exemplo 2: Escreva uma consulta para exibir a ID do funcionário, nome, sobrenome, cidade e departamento da tabela do funcionário e a ID do gerente e o nome do gerente da tabela do gerente usando Inner Join onde o departamento do funcionário é C#.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.CITY, E.DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE DEPARTMENT = ‘C#’;

Na consulta acima, buscamos o ID do funcionário, nome, sobrenome, cidade e departamento da tabela do funcionário, ID do gerente e nome do gerente da tabela do gerente, onde o ID do gerente da tabela de funcionários é igual ao ID do gerente apenas da tabela do gerente os registros de funcionários cujo departamento de funcionários é C#.

A saída da consulta acima é:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5

Na saída acima, podemos ver que apenas os registros são recuperados de funcionários cujo departamento é C#. Usamos a cláusula WHERE com a junção INNER.

Exemplo 3: Escreva uma consulta para exibir o ID do funcionário, nome, salário, cidade e departamento da tabela do funcionário e o ID do laptop e o nome do laptop da tabela do laptop usando o Inner Join.
SELECT E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY, E.DEPARTMENT, L.LAPTOPID, L.NAME FROM EMPLOYEES E INNER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID;

Na consulta acima, buscamos o ID do funcionário, o primeiro nome, o salário, a cidade e o departamento da tabela de funcionários e o ID do laptop e o nome da tabela do laptop, onde o ID do funcionário da tabela do funcionário é igual ao ID do funcionário da tabela do laptop . O ID do funcionário é uma chave estrangeira na tabela Laptop, que cria um relacionamento pai-filho entre a tabela Employee e a tabela Laptop.

A saída da consulta acima é:
EMPLOYEEID FIRST_NAME SALÁRIO CIDADE DEPARTAMENTO LAPTOPID NOME
1002 VAIBHAV 60.000 NOIDA C# 102 HP
3003 DEEPAM 58500 MUMBAI JAVA 104 HP
4002 ASHWINI 54500 NOIDA JAVA 105 DELL
4003 RUCHIKA 60.000 DÉLHI ORACLE 106 LENOVO
5001 ARQUIVO 55500 DÉLHI TESTE 107 DELL
2002 BHAVESH 65500 PUNE FMW 111 LENOVO
6003 NIKITA 65.000 HYDERABAD ORACLE 112 LENOVO
1003 NIQUIL 50500 JAIPUR FMW 113 HP

Apenas esses registros são exibidos na saída dada a quem o Laptop é atribuído.

Exemplo 4: Escreva uma consulta para exibir o ID do funcionário, o primeiro nome, o salário e o departamento da tabela de funcionários e o ID do gerente e o nome do gerente da tabela do gerente usando a junção interna em que salário> 57000 ou departamento é Oracle.
SELECT EMPLOYEEID, FIRST_NAME, SALARY, DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID = M.MANAGERID WHERE SALARY > 57000 OR DEPARTMENT = 'ORACLE';

Na consulta acima, buscamos o ID do funcionário, o primeiro nome, o salário e o departamento da tabela do funcionário, e o ID do gerente e o nome do gerente da tabela do gerente, onde o ID do gerente da tabela de funcionários é igual ao ID do gerente do gerente apenas os funcionários cujos o salário é maior que 57.000 ou o Departamento é Oracle.

A saída da consulta acima é:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
6003 NIKITA INGALE 65.000 HYDERABAD ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
5002 SANKET CHAUHAN 70.000 HYDERABAD JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5

Na saída acima, são exibidos apenas os registros de funcionários cujo salário é maior que 57.000 ou o departamento de funcionários é 'Oracle'. O operador OR exibe registros se uma das condições fornecidas na consulta for verdadeira.