Tutorial de MySQL: Joins e Funções Agregadas

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

O 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

O 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

O 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

O 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.