Introdução
Neste projeto, você aprenderá como usar consultas de junção (join queries) para recuperar dados relevantes das tabelas emp, dept e salgrade no banco de dados de pessoal.
👀 Pré-visualização

🎯 Tarefas
Neste projeto, você aprenderá:
- Como acessar o banco de dados MySQL e importar os dados de pessoal
- Como usar um equi-join (inner join) para recuperar os nomes, datas de contratação e os nomes dos departamentos correspondentes da tabela de funcionários
- Como usar um non-equi join para recuperar os nomes, salários e informações de nível salarial correspondentes de todos os funcionários da tabela de funcionários
- Como usar um self-join para recuperar as informações do superior do funcionário chamado "SMITH"
- Como usar um left outer join para recuperar todas as informações do departamento e suas informações de funcionários correspondentes
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Compreender os diferentes tipos de consultas de junção e quando usá-los
- Recuperar e manipular dados de várias tabelas em um banco de dados usando consultas de junção
- Aplicar conceitos avançados de SQL para resolver problemas complexos de recuperação de dados
Acessar o MySQL e Importar os Dados
Nesta etapa, você aprenderá como acessar o banco de dados MySQL e importar os dados de pessoal.
- Abra um terminal e execute o seguinte comando para iniciar o serviço MySQL:
sudo service mysql start
- Acesse a interface de linha de comando do MySQL usando o comando
sudosem nenhuma senha:
sudo mysql
- Importe os dados de pessoal do arquivo
/home/labex/project/personnel.sqlpara o banco de dados MySQL:
SOURCE /home/labex/project/personnel.sql;
Agora você acessou com sucesso o banco de dados MySQL e importou os dados de pessoal. Você pode prosseguir para a próxima etapa.
Recuperar Nomes de Funcionários, Datas de Contratação e Nomes dos Departamentos
Nesta etapa, você aprenderá como usar um equi-join (inner join) para recuperar os nomes, datas de contratação e os nomes dos departamentos correspondentes da tabela de funcionários.
- Abra o arquivo
join_query.sqlem um editor de texto e adicione o seguinte código:
SELECT e.ename AS `Name`, e.hiredate AS HireDate, d.dname AS DepartmentName
FROM emp e
JOIN dept d ON e.deptno = d.deptno;
Esta consulta realiza um inner join entre as tabelas emp e dept, correspondendo a coluna deptno da tabela emp com a coluna deptno da tabela dept. A saída resultante incluirá o nome do funcionário, a data de contratação e o nome do departamento.
- Salve o arquivo
join_query.sql.
Recuperar Nomes de Funcionários, Salários e Níveis Salariais
Nesta etapa, você aprenderá como usar um non-equi join para recuperar os nomes, salários e as informações correspondentes sobre o nível salarial de todos os funcionários da tabela de funcionários.
- Abra o arquivo
join_query.sqle adicione o seguinte código abaixo da consulta anterior:
SELECT e.ename AS `Name`, e.sal AS Salary,
CASE s.grade
WHEN 1 THEN 'A'
WHEN 2 THEN 'B'
WHEN 3 THEN 'C'
WHEN 4 THEN 'D'
WHEN 5 THEN 'E'
ELSE 'Unknown'
END AS Grade
FROM emp e
JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal;
Esta consulta realiza um non-equi join entre as tabelas emp e salgrade, correspondendo o salário do funcionário (e.sal) com a faixa de nível salarial (s.losal e s.hisal). A instrução CASE é usada para converter o nível salarial numérico em uma letra de nível correspondente.
- Salve o arquivo
join_query.sql.
Recuperar Informações do Superior do Funcionário Chamado 'SMITH'
Nesta etapa, você aprenderá como usar um self-join para recuperar as informações do superior do funcionário chamado "SMITH".
- Abra o arquivo
join_query.sqle adicione o seguinte código abaixo das consultas anteriores:
SELECT e1.empno, e1.ename, e1.job, e1.mgr, e1.hiredate, e1.sal, e1.comm, e1.deptno
FROM emp e1
JOIN emp e2 ON e1.empno = e2.mgr
WHERE e2.ename = 'SMITH';
Esta consulta realiza um self-join na tabela emp, correspondendo a coluna empno de um funcionário (e1) com a coluna mgr de outro funcionário (e2). A cláusula WHERE filtra os resultados para incluir apenas as informações do superior do funcionário chamado "SMITH".
- Salve o arquivo
join_query.sql.
Recuperar Todas as Informações do Departamento e as Informações Correspondentes dos Funcionários
Nesta etapa, você aprenderá como usar um left outer join para recuperar todas as informações do departamento e as informações correspondentes dos funcionários. Se um departamento não tiver nenhum funcionário, as informações do funcionário serão preenchidas com NULL.
- Abra o arquivo
join_query.sqle adicione o seguinte código abaixo das consultas anteriores:
SELECT e.empno, e.ename, e.job, e.mgr, e.hiredate, e.sal, e.comm, e.deptno,
d.deptno AS deptno_dept, d.dname, d.loc
FROM dept d
LEFT JOIN emp e ON d.deptno = e.deptno;
Esta consulta realiza um left outer join entre as tabelas dept e emp, correspondendo a coluna deptno de ambas as tabelas. A saída resultante incluirá todas as informações do departamento, juntamente com as informações correspondentes dos funcionários. Se um departamento não tiver nenhum funcionário, as informações do funcionário serão preenchidas com NULL.
- Salve o arquivo
join_query.sql.
Agora você concluiu todas as tarefas do projeto. Você pode executar o script join_query.sql na interface de linha de comando do MySQL para ver os resultados das consultas:
MariaDB [personnel]> SOURCE /home/labex/project/join_query.sql;

Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.
