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_codigo
e acidade_base
de todos os agentes.
Investigação Específica (
SELECT
comWHERE
):Encontre o
nome_codigo
do agente comnivel_habilidade
maior que 8.Liste todas as informações dos agentes que estão baseados em 'Gotham'.
Mostre o
nome_missao
das missões que não estão com status 'Concluída'.
Organizando Arquivos (
SELECT
comORDER BY
):Liste os
nome_codigo
dos agentes em ordem alfabética.Mostre as missões (
nome_missao
edata_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'. (Oid
eativo
devem 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 ostatus
dela para 'Concluída'. (Cuidado com oWHERE
!)O agente 'Faísca' (
id
=uuid-002
) treinou muito e subiu seunivel_habilidade
para 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_missao
e onome_codigo
do agente responsável por cada missão. Use umINNER JOIN
entre as tabelasmissoes
eagentes
.Liste o
nome_missao
, ostatus
da missão e onome_codigo
do agente, mas apenas para as missões que estão 'Em Andamento' ou em 'Planejamento'. (CombineJOIN
comWHERE
!).
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 osINSERT
s 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!
Last updated