Exercício 2 - Missão SQL - O Detetive de Dados
Sua Missão:** Usar seus novos superpoderes de SQL para interrogar um banco de dados e extrair informações cruciais (e também fazer umas alterações controladas)!
Vamos trabalhar com um cenário de uma pequena agência de heróis (ou vilões? 🤔).
O Banco de Dados da Agência:
Imagine que temos duas tabelas no nosso QG Supabase:
Tabela agentes:
uuid-001
Sombra
8
Gotham
true
uuid-002
Faísca
7
Metropolis
true
uuid-003
Titã
9
Central City
false
uuid-004
Oráculo
10
Gotham
true
Tabela missoes:
uuid-101
Roubo do Museu
Concluída
uuid-001 (Sombra)
2024-10-20
uuid-102
Salvar o Gato da Árvore
Em Andamento
uuid-002 (Faísca)
2025-05-15
uuid-103
Infiltrar na Torre Stark
Planejamento
uuid-004 (Oráculo)
2025-06-01
uuid-104
Deter o Pinguim
Concluída
uuid-001 (Sombra)
2025-01-30
Suas Tarefas de Detetive (Use o SQL Editor do Supabase ou SQLiteOnline):
Interrogatório Geral (
SELECT):Mostre todos os dados da tabela
agentes.Mostre apenas o
nome_codigoe acidade_basede todos os agentes.
Investigação Específica (
SELECTcomWHERE):Encontre o
nome_codigodo agente comnivel_habilidademaior que 8.Liste todas as informações dos agentes que estão baseados em 'Gotham'.
Mostre o
nome_missaodas missões que não estão com status 'Concluída'.
Organizando Arquivos (
SELECTcomORDER BY):Liste os
nome_codigodos agentes em ordem alfabética.Mostre as missões (
nome_missaoedata_inicio) ordenadas peladata_inicio, da mais recente para a mais antiga.
Novo Recruta (
INSERT):Adicione um novo agente à tabela
agentes:nome_codigo= 'Noturno',nivel_habilidade= 6,cidade_base= 'Metropolis'. (Oideativodevem usar o padrão ou ser gerados).
Atualização de Status (
UPDATE):A missão 'Salvar o Gato da Árvore' (
id=uuid-102) foi concluída! Atualize ostatusdela para 'Concluída'. (Cuidado com oWHERE!)O agente 'Faísca' (
id=uuid-002) treinou muito e subiu seunivel_habilidadepara 8. Atualize o registro dele. (Use o ID noWHERE!)
Arquivo Confidencial (
DELETE):(Hipotético - Pense bem antes de rodar!) Se precisássemos remover o agente 'Titã' (
id=uuid-003) que está inativo, qual seria o comando? (Use o ID noWHERE!) Não precisa rodar este se não quiser apagar dados de verdade.
Conectando os Pontos (
INNER JOIN):Mostre o
nome_missaoe onome_codigodo agente responsável por cada missão. Use umINNER JOINentre as tabelasmissoeseagentes.Liste o
nome_missao, ostatusda missão e onome_codigodo agente, mas apenas para as missões que estão 'Em Andamento' ou em 'Planejamento'. (CombineJOINcomWHERE!).
Como Fazer:
Opção 1 (Ideal): No seu projeto Supabase, crie essas duas tabelas (
agentes,missoes) no Table Editor. Insira os dados de exemplo manualmente ou usandoINSERT. Depois, vá ao SQL Editor (</>) e rode cada uma das queries das tarefas.Opção 2 (Alternativa): Use um site como SQLite Online. Copie e cole os comandos
CREATE TABLE(você terá que escrevê-los baseado na estrutura acima!) e osINSERTs para criar os dados de exemplo. Depois, rode as queries das tarefas.
Objetivo: Praticar os comandos SQL básicos (CRUD + JOIN) em um cenário concreto. É como aprender as frases essenciais para conversar com o banco de dados!
Atualizado

