O Que Aprendi Sobre Banco de Dados
Durante meus estudos sobre banco de dados, percorri uma trilha que vai desde os fundamentos até a prática com SQL. Neste artigo, compartilho os principais aprendizados de forma resumida, com exemplos práticos, especialmente abordo um pouco o tema de procedures e cursores, ainda que não abordados durante o curso são essenciais.
📐 Modelagem de Dados e Esquema Conceitual
Tudo começa com a modelagem: entender as entidades (ex: Clientes, Pedidos) e os relacionamentos entre elas. Com isso, criamos um Diagrama ER e depois transformamos em tabelas no banco.
🔄 Modelo Relacional e Mapeamento
Convertendo o modelo conceitual para o banco, criamos algo assim:
CREATE TABLE clientes (
id INT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE pedidos (
id INT PRIMARY KEY,
cliente_id INT,
valor DECIMAL(10,2),
data DATE,
FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);
🔍 Consultando os Dados
Com SQL, buscamos e analisamos os dados:
SELECT nome, email FROM clientes WHERE nome LIKE 'Ana%';
🧮 Agrupamentos e Funções
Funções agregadas nos ajudam em relatórios rápidos:
SELECT cliente_id, SUM(valor) AS total_gasto
FROM pedidos
GROUP BY cliente_id;
🔗 JOINs – Relacionando Tabelas
Relacionar tabelas é essencial para cruzar informações:
SELECT c.nome, p.valor, p.data
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id;
🧱 Projeto Lógico: Aplicando o Conhecimento
Depois de aprender tudo isso, criei um projeto com modelagem, criação das tabelas, popular dados e consultas. Ver tudo funcionando junto foi um grande passo.
🔄 Transformação e Qualidade de Dados
Na prática, dados chegam sujos. Aprendi a padronizar nomes, remover duplicatas e tratar nulos com SQL e ferramentas de ETL (como Power Query e Azure Data Factory).
❗ O que senti falta: Procedures e Cursores
No mundo real, muitas tarefas são repetitivas. É aí que entram as procedures e cursores.
🔧 Exemplo de Procedure
Uma procedure armazena comandos SQL no banco para reutilização. Exemplo: listar todos os pedidos de um cliente específico:
DELIMITER //
CREATE PROCEDURE listar_pedidos_cliente(IN id_cliente INT)
BEGIN
SELECT FROM pedidos
WHERE cliente_id = id_cliente;
END //
DELIMITER ;
Chamando a procedure:
CALL listar_pedidos_cliente(1);
🔁 Exemplo de Cursor
Cursores são úteis quando precisamos percorrer linha por linha e aplicar lógicas específicas. Exemplo: atualizar o status de clientes com base no total de pedidos:
CREATE PROCEDURE atualizar_status_clientes()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cliente_id INT;
DECLARE total DECIMAL(10,2);
DECLARE cur CURSOR FOR
SELECT cliente_id, SUM(valor) FROM pedidos GROUP BY cliente_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO cliente_id, total;
IF done THEN
LEAVE read_loop;
END IF;
IF total > 1000 THEN
UPDATE clientes SET status = 'VIP' WHERE id = cliente_id;
END IF;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
Executando a procedure:
CALL atualizar_status_clientes();