Este repositório é um guia prático e um ambiente de estudo e revisão focado no meu aprendizado da linguagem SQL (Structured Query Language). O projeto oferece um ambiente de banco deados MySQL completo, conteinerizado via Docker, pré-populado com dados fictícios e uma série de scripts que fui implementando ao longo dos meus estudos
- MySQL 8.0: Sistema de gerenciamento de banco de dados relacional.
- Docker & Docker Compose: Para orquestração do ambiente e facilidade de execução.
- SQL: Linguagem padrão para manipulação de dados.
O projeto está organizado em duas partes principais para separar a infraestrutura do material de estudo:
database/: Contém os scripts de DDL (Data Definition Language) e DML (Data Manipulation Language). Estes scripts são executados automaticamente ao iniciar o container para criar as tabelas (users,profiles,roles,user_roles) e popular o banco com dados de teste.guide_sql/: Contém uma trilha de aprendizado numerada, com exemplos práticos de queries para consultar e manipular os dados.
-
Clone o repositório:
git clone https://github.com/joao-vmoraes/Learning-SQL cd learning-sql -
Suba o ambiente: Execute o comando abaixo para iniciar o banco de dados. O Docker irá automaticamente ler os arquivos da pasta
database/e configurar o banco para você.docker-compose up -d
-
Acesse o Banco de Dados: Você pode usar qualquer cliente SQL (como DBeaver, MySQL Workbench ou VS Code Database Client) com as seguintes credenciais:
Configuração Valor Host localhostPorta 3306Database base_de_dadosUsuário usuarioSenha senhaNota: As credenciais estão configuradas no arquivo
docker-compose.yml.
O ambiente simula um sistema simples de gerenciamento de usuários com as seguintes tabelas e relacionamentos:
users: Tabela principal com dados de autenticação (email, password_hash).profiles: Informações adicionais do usuário (bio, nome), demonstrando um relacionamento com a tabela de usuários.roles: Perfis de acesso (ex: admin).user_roles: Tabela pivô para relacionamento N:N (Muitos-para-Muitos) entre usuários e roles.
A pasta guide_sql contém scripts que cobrem os seguintes conceitos:
- Manipulação Básica:
INSERT,SELECTsimples e projeção de colunas. - Filtragem de Dados: Uso de
WHERE, operadores lógicos,BETWEENeIN. - Busca de Padrões: Utilização do operador
LIKEcom coringas (%,_). - Ordenação e Paginação: Cláusulas
ORDER BY,LIMITeOFFSET. - Modificação de Dados: Comandos
UPDATEeDELETE. - Consultas Avançadas:
- Múltiplos selects.
- INNER JOIN: Interseção entre tabelas.
- LEFT JOIN: Priorização da tabela à esquerda.
- Inserção baseada em seleção (
INSERT ... SELECT).
Sinta-se à vontade para fazer um fork deste repositório e adicionar novos exemplos de queries ou melhorias na estrutura do banco de dados. Se esse repositório serviu de algo para você, deixe uma star nele! Obrigado.
