Capítulo 07: Processamento de Dados: Consultas Estruturadas (SQL) e Relatórios no SGBD

🎯 Objetivo da Aula

Nesta aula, você aprenderá a transformar tabelas de dados brutos em relatórios gerenciais estruturados utilizando a linguagem universal dos bancos de dados: a SQL (Structured Query Language). No laboratório de informática, você abrirá o arquivo de banco de dados do SIG FastLog e construirá consultas operacionais com filtros condicionais (WHERE), ordenação de prioridade (ORDER BY) e junção relacional de tabelas (INNER JOIN).

Ao final desta aula, você será capaz de extrair em milissegundos relatórios de peças críticas e cruzamentos de compras que antes demoravam horas de compilação manual.


🏢 Cenário Prático (FastLog S.A.)

Empresa: FastLog Transportes & Logística Integrada S.A.
Problema: Em uma inspeção surpresa da Agência Nacional de Transportes Terrestres (ANTT), o Diretor de Manutenção precisou apresentar em menos de 15 minutos uma relação completa de todos os pneus e freios de carretas cujo estoque estivesse abaixo da margem de segurança, incluindo o nome e o prazo de entrega dos fornecedores homologados para compras emergenciais. Abrir a tabela de itens e a de fornecedores separadamente e cruzar os dados no olho humano gerou nervosismo, duplicidades e quase causou uma autuação fiscal.
Sua Missão: Como técnico de TI e Gestão, você criará consultas SQL nativas no banco de dados SIG_FastLog_Dados.accdb. Com um único clique, o sistema executará o cruzamento entre as tabelas tbl_Itens e tbl_Fornecedores, filtrando apenas os itens que demandam ação imediata do comprador.


🧠 Fundamentos: A Teoria Traduzida

1. O que é SQL (Structured Query Language)?

Criada pela IBM na década de 1970, a linguagem SQL tornou-se o padrão internacional (ISO/ANSI) para comunicação com bancos de dados relacionais. Enquanto as planilhas exigem que você aponte coordenadas de células (A1:B10), o SQL opera de forma declarativa: você apenas informa o que deseja recuperar, e o motor do banco se encarrega de encontrar e ordenar os dados.

2. A Estrutura Básica de uma Instrução SQL

Toda consulta básica de extração é estruturada em blocos lógicos:

1
2
3
4
SELECT campo1, campo2       -- QUAIS colunas devem ser exibidas
FROM nome_da_tabela         -- DE QUAL tabela os dados serão lidos
WHERE condicao_de_filtro    -- QUAL critério de restrição deve ser atendido
ORDER BY campo1 ASC;        -- COMO os resultados devem ser ordenados (crescente/decrescente)

3. A Mágica do Relacionamento: O INNER JOIN

Em vez de usar fórmulas como o PROCV para cada linha, o SQL une duas ou mais tabelas em memória comparando a Chave Primária da tabela de origem com a Chave Estrangeira da tabela de destino:

flowchart LR
    subgraph TAB1["tbl_Itens"]
        I1["ID_Item: ITM-01<br/>Descricao: Pneu Radial<br/>ID_Fornecedor: FOR-10"]
    end

    subgraph JOIN["INNER JOIN ... ON (PK = FK)"]
        J["tbl_Fornecedores.ID_Fornecedor = tbl_Itens.ID_Fornecedor"]
    end

    subgraph TAB2["tbl_Fornecedores"]
        F1["ID_Fornecedor: FOR-10<br/>Nome: Goodyear Pneus<br/>Prazo: 3 dias"]
    end

    TAB1 --> JOIN
    TAB2 --> JOIN
    JOIN --> R["📊 Resultado Consolidado:<br/>ITM-01 | Pneu Radial | Goodyear Pneus | Prazo: 3 dias"]

    style TAB1 fill:#34495e,stroke:#fff,stroke-width:2px,color:#fff
    style TAB2 fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
    style JOIN fill:#f39c12,stroke:#fff,stroke-width:2px,color:#fff
    style R fill:#27ae60,stroke:#fff,stroke-width:2px,color:#fff

📖 Exemplo Guiado: Passo a Passo no Laboratório

Abra o arquivo SIG_FastLog_Dados.accdb (ou .odb) localizado na pasta 02_Processamento_BancoDados.

Passo 1: Acessando o Editor SQL do SGBD

  1. Na barra superior do Microsoft Access, acesse a guia Criar ➔ clique em Design da Consulta (Query Design).
  2. Na janela lateral que sugere tabelas, feche-a ou clique fora.
  3. No canto superior esquerdo (ou no rodapé), clique no botão Modo SQL (ícone SQL).
  4. Uma tela de texto limpa com o comando SELECT; aparecerá. Apague todo o texto antes de digitar suas consultas. (Nota no LibreOffice Base: Acesse a seção Consultas ➔ clique em ‘Criar consulta no modo SQL’).

🛠️ Prática Obrigatória 1: Consulta de Itens com Estoque Crítico

Agora você escreverá a consulta SQL que filtra automaticamente apenas os materiais cujo estoque atual está igual ou abaixo do estoque de segurança estipulado.

Passo a Passo no Computador:

  1. Digite a instrução SQL abaixo na janela de código:
    1
    2
    3
    4
    5
    6
    7
    8
    
    SELECT 
        ID_Item, 
        Descricao_Item, 
        Estoque_Atual, 
        Estoque_Seguranca
    FROM tbl_Itens
    WHERE Estoque_Atual <= Estoque_Seguranca
    ORDER BY Estoque_Atual ASC;
  2. Na guia superior Design da Consulta, clique no botão vermelho com um ponto de exclamação: Executar (!).
  3. Observe que o banco filtrou imediatamente os itens críticos e os ordenou do menor estoque para o maior.
  4. Clique no botão de disquete para salvar a consulta com o nome oficial: qry_Itens_Criticos.

✅ Resultado Esperado (Prática 1):

ID_ItemDescricao_ItemEstoque_AtualEstoque_Seguranca
ITM-03Pastilha de Freio Carreta54 (Item muito próximo da margem!)
ITM-01Pneu Radial 295/80 R22.586

🛠️ Prática Obrigatória 2: Cruzamento Relacional com INNER JOIN

Agora você construirá uma consulta que une a tabela de peças à tabela de parceiros comerciais, exibindo a descrição do insumo junto com o nome fantasia e o prazo do fornecedor.

Passo a Passo no Computador:

  1. Crie uma nova consulta no Modo SQL (Criar ➔ Design da Consulta ➔ Modo SQL).
  2. Digite a instrução relacional abaixo:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    SELECT 
        tbl_Itens.ID_Item, 
        tbl_Itens.Descricao_Item, 
        tbl_Itens.Estoque_Atual, 
        tbl_Fornecedores.Nome_Fantasia, 
        tbl_Fornecedores.Prazo_Entrega_Dias
    FROM tbl_Fornecedores 
    INNER JOIN tbl_Itens 
        ON tbl_Fornecedores.ID_Fornecedor = tbl_Itens.ID_Fornecedor
    ORDER BY tbl_Fornecedores.Nome_Fantasia ASC;
  3. Clique em Executar (!).
  4. Observe que o banco realizou a junção instantânea das duas tabelas através da Chave Primária/Estrangeira sem gerar nenhuma redundância de armazenamento físico.
  5. Salve esta consulta com o nome: qry_Almoxarifado_Fornecedores_JOIN.

✅ Resultado Esperado (Prática 2):

ID_ItemDescricao_ItemEstoque_AtualNome_FantasiaPrazo_Entrega_Dias
ITM-03Pastilha de Freio Carreta5Bosch Sistemas de Freio7
ITM-01Pneu Radial 295/80 R22.58Goodyear Pneus Comerciais3
ITM-02Óleo Diesel S10 Granel4500Ipiranga Distribuidora Diesel1
ITM-04Óleo Lubrificante Motor 15W4040Ipiranga Distribuidora Diesel1

📤 Instruções de Entrega (Microsoft Teams)

  1. Feche todas as consultas abertas no Access/Base para salvar as alterações no arquivo.
  2. Acesse a pasta 02_Processamento_BancoDados.
  3. Renomeie o arquivo atualizado para: Atividade_07_SQL_SeuNome_SeuSobrenome.accdb (ou .odb).
  4. Abra o Microsoft Teams na equipe da disciplina.
  5. Abra a tarefa: “TI Aplicada - Cap 07: Consultas Estruturadas SQL e INNER JOIN”.
  6. Anexe o arquivo .accdb e clique em Entregar (Turn In).

💡 Checkpoint de Gestão & TI

Compreender consultas SQL é uma das competências mais valorizadas do profissional de Gestão e TI. Enquanto usuários comuns dependem do departamento de suporte para gerar relatórios, o gestor moderno conecta-se diretamente ao banco de dados corporativo através de instruções SQL para auditar gargalos operacionais e antecipar decisões de compra.


🔥 Desafio de Fixação: Consulta de Insumos de Alto Valor Financeiro

Crie uma terceira consulta no SGBD que filtre os materiais estratégicos de alto custo unitário:

  1. Crie uma consulta no modo SQL chamada qry_Insumos_Estrategicos.
  2. A consulta deve retornar o ID_Item, Descricao_Item e o Custo_Unitario_R$ de todos os materiais cujo custo unitário seja maior ou igual a R$ 1.000,00.
  3. Ordene o resultado do material mais caro para o mais barato (ORDER BY Custo_Unitario_R$ DESC).
  4. Execute a consulta e confirme se o item Pneu Radial (R$ 2.450,00) aparece no topo da lista.

🔑 Revelar Gabarito Oficial de Laboratório (Clique para expandir)
💡 Incentivo Pedagógico: Tente resolver as práticas e o desafio de fixação por conta própria antes de abrir o gabarito. Seus erros e tentativas durante o laboratório são a chave para a consolidação real do aprendizado!

Código SQL Oficial das Consultas do SIG FastLog:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
-- 1. Consulta de Estoque Crítico (qry_Itens_Criticos)
SELECT ID_Item, Descricao_Item, Estoque_Atual, Estoque_Seguranca
FROM tbl_Itens
WHERE Estoque_Atual <= Estoque_Seguranca
ORDER BY Estoque_Atual ASC;

-- 2. Consulta Relacional Fornecedor x Peça (qry_Almoxarifado_Fornecedores_JOIN)
SELECT tbl_Itens.ID_Item, tbl_Itens.Descricao_Item, tbl_Itens.Estoque_Atual, tbl_Fornecedores.Nome_Fantasia, tbl_Fornecedores.Prazo_Entrega_Dias
FROM tbl_Fornecedores 
INNER JOIN tbl_Itens ON tbl_Fornecedores.ID_Fornecedor = tbl_Itens.ID_Fornecedor
ORDER BY tbl_Fornecedores.Nome_Fantasia ASC;

-- 3. Consulta do Desafio de Fixação (qry_Insumos_Estrategicos)
SELECT ID_Item, Descricao_Item, Custo_Unitario_R$
FROM tbl_Itens
WHERE Custo_Unitario_R$ >= 1000
ORDER BY Custo_Unitario_R$ DESC;

📝 Atividade Extra: Questionário de Fixação (Caderno)

Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que você estudou neste capítulo. Ao concluir, apresente o caderno ao professor para conferência e visto.

  1. O que significa a sigla SQL e em qual década essa linguagem foi desenvolvida?
  2. No Cenário Prático da FastLog, qual situação de emergência gerou a necessidade imediata de consultar o banco de dados via SQL?
  3. Para que serve a cláusula SELECT em uma instrução SQL?
  4. Qual é a finalidade da cláusula WHERE e qual operador relacional foi utilizado nela para comparar o estoque atual ao de segurança?
  5. Qual é o papel da cláusula ORDER BY e qual é a diferença entre as opções ASC e DESC?
  6. Explique como a cláusula INNER JOIN opera o cruzamento de duas tabelas diferentes em um banco de dados relacional.
  7. Na Prática Obrigatória 1, por que os itens ITM-01 e ITM-03 foram os únicos exibidos pelo resultado da consulta qry_Itens_Criticos?
  8. Na Prática Obrigatória 2, qual campo em comum serviu como critério de junção no comando ON entre as tabelas tbl_Fornecedores e tbl_Itens?
  9. De acordo com o Checkpoint de Gestão & TI, qual é a vantagem competitiva de um gestor que domina a criação de consultas SQL?
  10. No Desafio de Fixação, qual critério de filtragem e de ordenação foi utilizado para extrair os insumos de alto valor financeiro?