Tutorial de MySQL: Joins e Funções Agregadas

 

1. Introdução a MySQL

MySQL é um sistema de gerenciamento de banco de dados relacional (SGBDR) muito popular, amplamente utilizado para armazenar e #gerenciar dados. Neste tutorial, vamos explorar alguns conceitos básicos de MySQL, especialmente joins e funções agregadas.

2. Criando Tabelas e Inserindo #Dados

Primeiro, vamos criar duas tabelas: alunos e notas. Cada aluno pode ter várias notas.

 

CREATE TABLE alunos (
 id INT AUTO_INCREMENT PRIMARY KEY,
 nome VARCHAR(100) NOT NULL
);

CREATE TABLE notas (
 id INT AUTO_INCREMENT PRIMARY KEY,
 aluno_id INT,
 valor DECIMAL(5,2),
 FOREIGN KEY (aluno_id) REFERENCES alunos(id)
);

Agora, vamos inserir alguns dados nas tabelas:

 

 

INSERT INTO alunos (nome) VALUES ('João'), ('Maria'), ('Carlos');
INSERT INTO notas (aluno_id, valor) VALUES (1, 7.5), (1, 8.0), (2, 9.0), (2, 8.5), (3, 7.0);

3. Joins

Joins são usados para combinar linhas de duas ou mais tabelas com base em uma relação entre elas. Vamos explorar os tipos mais comuns de joins.

3.1 INNER JOIN

INNER JOIN retorna registros que têm correspondência em ambas as tabelas.

 

Apply

SELECT alunos.nome, notas.valor
FROM alunos
INNER JOIN notas ON alunos.id = notas.aluno_id;

Resultado:

nome valor
João 7.5
João 8.0
Maria 9.0
Maria 8.5
Carlos 7.0
3.2 LEFT JOIN

LEFT JOIN retorna todos os registros da tabela à esquerda e os registros correspondentes da tabela à direita. Se não houver correspondência, os resultados da direita serão NULL.

 

 

SELECT alunos.nome, notas.valor
FROM alunos
LEFT JOIN notas ON alunos.id = notas.aluno_id;

Resultado:

nome valor
João 7.5
João 8.0
Maria 9.0
Maria 8.5
Carlos 7.0
3.3 RIGHT JOIN

RIGHT JOIN retorna todos os registros da tabela à direita e os registros correspondentes da tabela à esquerda. Se não houver correspondência, os resultados da esquerda serão NULL.

 

 

SELECT alunos.nome, notas.valor
FROM alunos
RIGHT JOIN notas ON alunos.id = notas.aluno_id;

Resultado:

nome valor
João 7.5
João 8.0
Maria 9.0
Maria 8.5
Carlos 7.0
3.4 FULL OUTER JOIN

FULL OUTER JOIN retorna todos os registros quando há uma correspondência em uma das tabelas. MySQL não suporta FULL OUTER JOIN nativamente, mas podemos simulá-lo usando UNION.

 

 

SELECT alunos.nome, notas.valor
FROM alunos
LEFT JOIN notas ON alunos.id = notas.aluno_id
UNION
SELECT alunos.nome, notas.valor
FROM alunos
RIGHT JOIN notas ON alunos.id = notas.aluno_id;

Resultado:

nome valor
João 7.5
João 8.0
Maria 9.0
Maria 8.5
Carlos 7.0

4. Funções Agregadas

Funções agregadas são usadas para realizar operações em um conjunto de valores e retornar um único valor.

4.1 COUNT

A função COUNT retorna o número de linhas que correspondem a uma condição.

 

 

SELECT COUNT(*) AS total_alunos
FROM alunos;

Resultado:

total_alunos
3
4.2 AVG

A função AVG retorna a média dos valores de uma coluna.

 

 

SELECT AVG(notas.valor) AS media_notas
FROM notas;

Resultado:

media_notas
8.0
4.3 SUM

A função SUM retorna a soma dos valores de uma coluna.

 

 

SELECT SUM(notas.valor) AS soma_notas
FROM notas;

Resultado:

soma_notas
40.0
4.4 MAX e MIN

As funções MAX e MIN retornam, respectivamente, o valor máximo e o valor mínimo de uma coluna.

 

 

SELECT MAX(notas.valor) AS max_nota, MIN(notas.valor) AS min_nota
FROM notas;

Resultado:

max_nota min_nota
9.0 7.0

5. Combinando Joins e Funções Agregadas

Agora, vamos combinar joins e funções agregadas para obter resultados mais complexos.

5.1 Média de Notas por Aluno

 

 

SELECT alunos.nome, AVG(notas.valor) AS media_notas
FROM alunos
INNER JOIN notas ON alunos.id = notas.aluno_id
GROUP BY alunos.id;

Resultado:

nome media_notas
João 7.75
Maria 8.75
Carlos 7.0
5.2 Total de Notas por Aluno

 

 

SELECT alunos.nome, COUNT(notas.valor) AS total_notas
FROM alunos
INNER JOIN notas ON alunos.id = notas.aluno_id
GROUP BY alunos.id;

Resultado:

nome total_notas
João 2
Maria 2
Carlos 1

6. Conclusão

Neste tutorial, você aprendeu sobre joins e funções agregadas em MySQL. Joins são essenciais para combinar dados de múltiplas tabelas, enquanto funções agregadas permitem realizar operações matemáticas e estatísticas em conjuntos de dados.

Para mais informações e exemplos, consulte a documentação oficial do MySQL.