← Voltar ao Menu

🏗️ Conceitos Fundamentais

O que é um Banco de Dados?

Um banco de dados é como um arquivo digital super organizado que armazena informações de forma estruturada. Imagine uma biblioteca gigante onde cada livro tem seu lugar específico e você pode encontrar qualquer informação rapidamente.

Analogia: Se uma planilha Excel é como uma gaveta de arquivos, um banco de dados é como um prédio inteiro de arquivos interconectados, onde você pode encontrar qualquer informação em segundos.

Por que usar Banco de Dados?

🏛️ Estrutura de um Banco de Dados

📋 Tabelas

Uma tabela é como uma planilha com linhas e colunas. Cada tabela armazena um tipo específico de informação.

Exemplo no jogo:
• Tabela cidadaos → Informações dos personagens
• Tabela veiculos → Informações dos veículos
Tabela "cidadaos" ┌────┬─────────────┬──────────┬───────────┐ │ id │ nome │ tipo │ cidade │ ├────┼─────────────┼──────────┼───────────┤ │ 1 │ X-7 Phantom │ androide │ Neon-City │ │ 2 │ Maya Chen │ humano │ Neon-City │ └────┴─────────────┴──────────┴───────────┘

📏 Colunas (Campos)

As colunas definem que tipo de informação será armazenada. Cada coluna tem um nome e um tipo de dado.

  • id: Número único para identificar cada registro
  • nome: Texto com o nome do personagem
  • tipo: Categoria (humano, androide, robô)
  • idade: Número representando a idade
  • cidade: Texto com o local de residência

📄 Linhas (Registros)

Cada linha representa um item completo. No nosso jogo, cada linha é um personagem diferente.

Linha 1: id=1, nome="X-7 Phantom", tipo="androide", cidade="Neon-City"
Linha 2: id=2, nome="Maya Chen", tipo="humano", cidade="Neon-City"

🔑 Chaves Primárias e Estrangeiras

Chave Primária: Coluna que identifica unicamente cada registro (geralmente 'id')

Chave Estrangeira: Coluna que conecta uma tabela a outra

Tabela "veiculos" ┌────┬─────────────┬─────────────────┐ │ id │ modelo │ proprietario_id │ ← Chave Estrangeira ├────┼─────────────┼─────────────────┤ │ 1 │ Cyber-Bike │ 1 │ → Conecta ao cidadão id=1 │ 2 │ Hover-Car │ 2 │ → Conecta ao cidadão id=2 └────┴─────────────┴─────────────────┘

💬 O que é SQL?

SQL (Structured Query Language) é a linguagem que usamos para "conversar" com o banco de dados. É como aprender o idioma que o banco entende.

Analogia: Se o banco de dados é uma biblioteca, SQL é como você pede ao bibliotecário: "Por favor, me traga todos os livros de ficção científica escritos em 2020."

🎯 SQL é Declarativo

Você diz O QUE quer, não COMO fazer. O banco descobre a melhor forma de buscar.

Exemplo Prático

Você quer: "Todos os androides de Neon-City"

Em SQL:

SELECT * FROM cidadaos WHERE tipo = 'androide' AND cidade = 'Neon-City'

O banco entende: "Vou procurar na tabela cidadaos, filtrar por tipo=androide E cidade=Neon-City, e retornar todos os dados desses registros."

⚡ Comandos SQL Detalhados

🔍 SELECT - Selecionar Dados

O comando mais importante! Usado para buscar informações no banco.

SELECT coluna1, coluna2 FROM tabela
Variações:
  • SELECT * → Todas as colunas
  • SELECT nome → Apenas a coluna nome
  • SELECT nome, idade → Colunas nome e idade
No jogo:
SELECT * FROM cidadaos → Mostra todos os personagens
SELECT nome FROM cidadaos → Mostra apenas os nomes

📋 FROM - Especificar Tabela

Indica de onde vêm os dados. Sempre usado junto com SELECT.

SELECT * FROM nome_da_tabela
Tabelas disponíveis no jogo:
cidadaos → Personagens da história
veiculos → Veículos dos personagens

🎯 WHERE - Filtrar Resultados

Define condições para filtrar os dados. Como um filtro de pesquisa.

SELECT * FROM tabela WHERE condição
Operadores de Comparação:
  • = → Igual a
  • > → Maior que
  • < → Menor que
  • >= → Maior ou igual
  • <= → Menor ou igual
  • != ou <> → Diferente de
Exemplos práticos:
WHERE idade > 30 → Personagens com mais de 30 anos
WHERE cidade = 'Neon-City' → Moradores de Neon-City
WHERE tipo = 'androide' → Apenas androides

🔗 AND, OR, NOT - Lógica Booleana

Combinam múltiplas condições para filtros mais específicos.

WHERE condição1 AND condição2 WHERE condição1 OR condição2 WHERE NOT condição
Como funcionam:
  • AND: Ambas condições devem ser verdadeiras
  • OR: Pelo menos uma condição deve ser verdadeira
  • NOT: Inverte a condição (verdadeiro vira falso)
Exemplos:
WHERE tipo = 'humano' AND idade > 25 → Humanos com mais de 25 anos
WHERE cidade = 'Neon-City' OR cidade = 'Cyber-District' → Duas cidades
WHERE NOT tipo = 'robô' → Todos exceto robôs

🔎 LIKE - Busca por Padrões

Busca textos que contêm determinados caracteres. Útil quando não sabemos o texto exato.

WHERE coluna LIKE 'padrão'
Caracteres Especiais:
  • % → Representa qualquer sequência de caracteres
  • _ → Representa um único caractere
Exemplos:
WHERE nome LIKE 'X-%' → Nomes que começam com "X-"
WHERE nome LIKE '%Chen%' → Nomes que contêm "Chen"
WHERE nome LIKE '_-7%' → Nomes como "X-7", "A-7", etc.

🔗 INNER JOIN - Relacionar Tabelas

Combina dados de duas ou mais tabelas baseado em uma relação entre elas.

SELECT * FROM tabela1 INNER JOIN tabela2 ON tabela1.id = tabela2.chave_estrangeira
Exemplo no jogo:
SELECT cidadaos.nome, veiculos.modelo
FROM cidadaos
INNER JOIN veiculos ON cidadaos.id = veiculos.proprietario_id


Resultado: Lista de personagens e seus veículos

⬅️ LEFT JOIN - Incluir Dados Ausentes

Similar ao INNER JOIN, mas inclui todos os registros da tabela da esquerda, mesmo sem correspondência.

SELECT * FROM tabela1 LEFT JOIN tabela2 ON tabela1.id = tabela2.chave_estrangeira
Diferença:
INNER JOIN: Só mostra personagens QUE TÊM veículos
LEFT JOIN: Mostra TODOS os personagens, com ou sem veículos

🔢 COUNT - Contar Registros

Conta quantos registros existem. Útil para estatísticas.

SELECT COUNT(*) FROM tabela SELECT COUNT(coluna) FROM tabela
Exemplos:
SELECT COUNT(*) FROM cidadaos → Total de personagens
SELECT COUNT(*) FROM cidadaos WHERE tipo = 'androide' → Total de androides

🎯 COUNT DISTINCT - Contar Únicos

Conta apenas valores diferentes (únicos) em uma coluna.

SELECT COUNT(DISTINCT coluna) FROM tabela
Exemplo:
SELECT COUNT(DISTINCT cidade) FROM cidadaos
→ Quantas cidades diferentes existem no banco

🎮 Dados do Jogo

Tabela: cidadaos

📊 Estrutura da Tabela

cidadaos ├── id (INTEGER) - Identificador único ├── nome (TEXT) - Nome do personagem ├── tipo (TEXT) - humano, androide, robô, pet-bot ├── idade (INTEGER) - Idade em anos ├── cidade (TEXT) - Cidade de residência ├── profissao (TEXT) - Profissão/função └── status (TEXT) - ativo, desaparecido, suspeito
Tipos de Personagens:
  • humano: Investigadores e testemunhas
  • androide: Personagens principais da conspiração
  • robô: Suspeitos secundários
  • pet-bot: Companheiros digitais
Cidades do Universo:
  • Neon-City: Metrópole principal
  • Cyber-District: Distrito tecnológico
  • Tech-Zone: Zona industrial
  • Shadow-Sector: Área suspeita

Tabela: veiculos

🚗 Estrutura da Tabela

veiculos ├── id (INTEGER) - Identificador único ├── modelo (TEXT) - Modelo do veículo ├── cor (TEXT) - Cor do veículo ├── ano (INTEGER) - Ano de fabricação └── proprietario_id (INTEGER) - ID do dono (chave estrangeira)
Tipos de Veículos Futuristas:
  • Cyber-Bike: Motocicletas tecnológicas
  • Hover-Car: Carros flutuantes
  • Speed-Drone: Drones de transporte
  • Patrol-Unit: Veículos de patrulha

🎨 Dicas Visuais para Aprender

🧠 Como Pensar em SQL

  1. Identifique o objetivo: O que você quer descobrir?
  2. Escolha a tabela: Onde estão esses dados?
  3. Selecione as colunas: Que informações precisa?
  4. Defina os filtros: Que condições aplicar?
  5. Execute e analise: Os resultados fazem sentido?

📝 Estrutura Mental de uma Consulta

SELECT [o que você quer ver] FROM [onde estão os dados] WHERE [que condições devem ser atendidas]
Traduzindo para português:
"SELECIONE [nome e idade]
DA TABELA [cidadaos]
ONDE [tipo é igual a 'androide']"

🔍 Estratégia de Investigação

  1. Explore primeiro: SELECT * FROM tabela
  2. Entenda os dados: Que colunas existem?
  3. Filtre gradualmente: Adicione WHERE
  4. Refine a busca: Use AND, OR
  5. Relacione tabelas: Use JOIN quando necessário

🧭 Próximos Passos