🎯 ATIVIDADE 06 — MOBILIANDO A CASA
Para realizar este laboratório com sucesso, certifique-se de ter compreendido os conceitos apresentados no:
👉 CAPÍTULO 06: ANATOMIA DE ATRIBUTOS, DOMÍNIOS E TIPOS
Bem-vindo à sexta semana (4 aulas) do curso de Banco de Dados. Sua estrutura teórica já está pronta. Agora, vamos "mobiliar" o sistema — inserir dados reais e aprender a fazer as perguntas certas ao banco de dados usando a DML (Data Manipulation Language). 🛡️🧩
🎯 Objetivos de Aprendizagem do Laboratório
Ao final deste laboratório prático (estimativa: 4 horas presenciais / autoguiadas), você será capaz de:
- Inserir registros usando o comando
INSERT INTO. - Consultar dados de forma seletiva com
SELECTeWHERE. - Utilizar Operadores Lógicos (e / ou) para filtrar resultados com precisão.
- Ordenar informações com
ORDER BY.
🏢 O Cenário Prático (Seu Desafio)
A TecProExpress iniciou suas operações! Você recebeu uma lista de clientes iniciais e produtos. Seu desafio é popular o banco e gerar os primeiros relatórios para a gerência.
A Regra de Ouro: Você não pode colocar móveis em uma casa que ainda não tem paredes. No banco de dados, primeiro CRIAMOS a tabela (DDL) e depois INSERIMOS os dados (DML).
🧠 Fundamentos: A Teoria Traduzida
Consultar o banco é como usar o filtro de pesquisa do Instagram ou da Amazon.
O Fluxo da Pergunta (SELECT)
Veja como o banco processa sua solicitação:
flowchart LR
A[1. Tabela Criada] --> B[2. Dados Inseridos]
B --> C{"3. WHERE: Filtro"}
C -- Atende --> D[Exibir Linha]
C -- Não Atende --> E[Descartar]
D --> F["4. ORDER BY: Ordenação"]
style A fill:#e8f5e9
style B fill:#fffde7
📖 Exemplo Guiado: O Passo a Passo Completo
Para quem está começando, este é o fluxo obrigatório para qualquer banco de dados.
1. Criando o "Espaço" (DDL)
-- Primeiro, criamos a tabela para receber os produtos
CREATE TABLE produto (
id INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(100),
preco DECIMAL(10,2)
);
2. Inserindo a "Mobília" (DML)
-- Agora que a tabela existe, inserimos os dados
INSERT INTO produto (nome, preco) VALUES
('Smartphone X', 2500.00),
('Cabo USB', 25.00),
('Monitor 4K', 1800.00);
3. Fazendo a Pergunta (Query)
-- Selecionamos apenas o que nos interessa
SELECT nome, preco FROM produto WHERE preco > 100 AND preco < 2000;
🔍 Detalhamento do Código:
- CREATE TABLE: Prepara o terreno. Sem isso, o comando INSERT dá erro de "Table doesn't exist".
- INSERT INTO: "Empurra" os dados para dentro das colunas nome e preco.
- AND: O operador e exige que as duas condições sejam verdadeiras ao mesmo tempo.
🛠️ Prática Obrigatória 1: Populando a TecProExpress
Cenário: Carga inicial de teste.
- Crie a tabela
clientecom as colunasid,nomeecidade. - Insira 5 Clientes (use cidades como 'São Paulo', 'Curitiba' e 'Santos').
🚀 Script de Seed Completo (SQL)
```sql -- PASSO 1: Criar a tabela CREATE TABLE cliente ( id INT PRIMARY KEY AUTO_INCREMENT, nome VARCHAR(100), cidade VARCHAR(50) );-- PASSO 2: Inserir os dados INSERT INTO cliente (nome, cidade) VALUES ('Marcos Silva', 'São Paulo'), ('Julia Costa', 'Curitiba'), ('Roberto Dias', 'Santos'), ('Ana Paula', 'São Paulo'), ('Lucas Melo', 'Santos');
---
## 💻 Execução DML & Resultado Esperado no Terminal
Para executar o script de inserção e a consulta com filtros no terminal do SGBD:
```sql
-- Executando a consulta com operador OR e ORDER BY
SELECT nome, cidade FROM cliente WHERE cidade = 'São Paulo' OR cidade = 'Santos' ORDER BY nome ASC;
🖥️ Saída Esperada no Terminal:
nome | cidade
---------------+------------
Ana Paula | São Paulo
Lucas Melo | Santos
Marcos Silva | São Paulo
Roberto Dias | Santos
(4 rows)
🌐 Requisição cURL e Payload JSON para Inserção em Lote (Swagger /docs)
curl -X POST "http://127.0.0.1:8000/api/v1/clientes/bulk" \
-H "Content-Type: application/json" \
-d '[
{"nome": "Marcos Silva", "cidade": "São Paulo"},
{"nome": "Julia Costa", "cidade": "Curitiba"},
{"nome": "Roberto Dias", "cidade": "Santos"}
]'
🔹 Resposta JSON:
{
"mensagem": "3 clientes inseridos com sucesso!",
"status_code": 201
}
🛠️ Prática Obrigatória 2: Relatórios de Operação
Cenário: O Gerente solicitou dados específicos.
- Filtro Flexível (ou): Liste os clientes que moram em 'São Paulo' ou 'Santos'.
- Ordenação: Liste todos os produtos do mais caro para o mais barato (
DESC).
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos SQL locais:
- Certifique-se de que os seus comandos
INSERT INTOeSELECTestão em conformidade com o padrão ANSI SQL. - Salve os comandos em um único arquivo de script com a extensão
.sql(Ex:Atividade_06_SeuNome.sql). - Certifique-se de incluir comentários no código explicando o papel dos filtros lógicos
AND(operador e para restringir linhas) eOR(operador ou para ampliar critérios) nas consultas. - Envie o arquivo
.sqlcorrespondente no Microsoft Teams para avaliação técnica.
💡 Checkpoint de Lógica
Dica para Iniciantes:
Sempre que você fechar seu banco de dados e abrir de novo, verifique se a tabela ainda existe. Se você estiver usando um banco em memória ou temporário, precisará rodar o CREATE TABLE novamente antes de inserir dados. 🧠🛡️
🔥 Desafio de Fixação (Opcional)
Nível: Analista Sênior 🏆
Use o operador LIKE para encontrar todos os clientes cujo nome comece com a letra "A". Como o WHERE se comporta nesse caso?
🔑 Gabarito de Código/Fórmulas Completo
Consultas da Prática 2:
-- 1. Filtro Flexível (OU)
SELECT * FROM cliente
WHERE cidade = 'São Paulo' OR cidade = 'Santos';
-- 2. Ordenação Decrescente (Z-A / Maior-Menor)
SELECT * FROM produto
ORDER BY preco DESC;
🔍 Explicação do Gabarito:
- OR: Traz registros que atendam a QUALQUER uma das condições.
- DESC: Inverte a ordem natural. No preço, coloca o mais caro primeiro.
📊 Rubrica Formativa de Avaliação
| Critério de Avaliação | Insuficiente (0% - 40%) | Regular (41% - 70%) | Excelente (71% - 100%) |
|---|---|---|---|
| Sintaxe SQL DML (INSERT, SELECT, ORDER BY) | Erros de sintaxe em inserção ou consultas sem cláusulas de filtro (`WHERE`). | Escreve as queries `INSERT` e `SELECT` mas sem demonstrar o uso de `ORDER BY DESC`. | Queries SQL DML perfeitas com sementes de dados (`INSERT INTO`), filtros lógicos `AND`/`OR` e ordenação `ORDER BY`. |
| Comentários & Explicação Técnica | Sem comentários no script SQL. | Comentários superficiais nos comandos SQL. | Comentários ricos explicando a diferença entre `AND` (restritivo) e `OR` (ampliativo) no resultado das linhas. |
| Entrega do Script SQL | Entrega script com erros de execução. | Script entregue mas fora do padrão de extensão `.sql`. | Submete `Atividade_06_SeuNome.sql` limpo, formatado e testado no SGBD. |