Desenvolvimento e Banco de Dados: SQL, modelagem e transações
Escopo
Linguagens e paradigmas (orientação a objetos, funcional), estruturas de dados, SQL (DDL, DML, joins, agregação, subconsultas), modelagem relacional (chaves, normalização), transações (ACID), índices e noções de NoSQL.
Conceitos essenciais
DDL define estruturas (CREATE, ALTER, DROP); DML manipula dados (INSERT, UPDATE, DELETE); DQL consulta (SELECT). Inner join retorna apenas correspondências; left join mantém todas as linhas da esquerda. GROUP BY agrega; HAVING filtra grupos; WHERE filtra linhas antes da agregação. ACID: atomicidade, consistência, isolamento e durabilidade. Normalização reduz redundância; 1FN elimina atributos multivalorados; 2FN remove dependências parciais; 3FN remove dependências transitivas. Índices aceleram leitura e penalizam escrita.
Armadilhas
Usar WHERE para filtrar resultado de agregação; confundir COUNT(*) com COUNT(coluna) (a segunda ignora nulos); achar que normalizar sempre melhora desempenho; esquecer que transações garantem atomicidade em operações compostas.
Regra prática
Ordene mentalmente a execução: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. Isso resolve a maioria das questões de SQL.
Exemplo trabalhado: “Listar departamentos com mais de 10 empregados.” SELECT depto, COUNT(*) FROM emp GROUP BY depto HAVING COUNT(*) > 10; - o filtro é HAVING, pois incide sobre a agregação.