| Bellacosa Mainframe e o SQL no Mainframe muito alem do select |
☕ SQL NO MAINFRAME: MUITO ALÉM DO SELECT
Como Dominar os Fundamentos de SQL no DB2 13 for z/OS
Quando alguém abre o SPUFI, Data Studio, DBeaver ou qualquer ferramenta SQL pela primeira vez, normalmente executa algo simples:
SELECT *
FROM CLIENTES;
A consulta retorna dados.
O usuário sorri.
Acredita que aprendeu SQL.
Mas na realidade acabou de dar apenas o primeiro passo de uma longa jornada.
No universo Mainframe, SQL é a língua falada entre:
COBOL
CICS
IMS
Java
Web Services
APIs REST
z/OS Connect
Analytics
Inteligência Artificial
Todo sistema corporativo moderno passa por SQL em algum momento.
E o DB2 13 elevou ainda mais essa importância.
A HISTÓRIA QUE TODO PROFISSIONAL DE MAINFRAME DEVERIA CONHECER
Antes do SQL, bancos relacionais eram apenas uma teoria.
Em 1970, Edgar F. Codd publicou um artigo revolucionário na IBM:
A Relational Model of Data for Large Shared Data Banks
Esse trabalho mudou a computação.
A ideia era simples:
Ao invés de navegar registros fisicamente, os usuários deveriam dizer:
"Quero estes dados."
E o banco decidiria:
"Eu descubro a melhor forma de encontrá-los."
Nascia o conceito de SQL.
Décadas depois, essa filosofia continua viva dentro do DB2 13.
O QUE É SQL?
SQL significa:
Structured Query Language
Ou:
Linguagem Estruturada de Consulta
Ela permite:
Consultar dados
Inserir dados
Alterar dados
Excluir dados
Criar estruturas
Gerenciar segurança
Praticamente tudo que fazemos no DB2 passa por SQL.
OS QUATRO GRANDES GRUPOS DE COMANDOS SQL
DQL – Data Query Language
Consulta de dados.
Exemplo:
SELECT *
FROM FUNCIONARIOS;
DML – Data Manipulation Language
Manipulação de registros.
INSERT INTO FUNCIONARIOS
VALUES
(100,'CARLOS');
UPDATE FUNCIONARIOS
SET SALARIO = 5000
WHERE MATRICULA = 100;
DELETE
FROM FUNCIONARIOS
WHERE MATRICULA = 100;
DDL – Data Definition Language
Definição das estruturas.
CREATE TABLE CLIENTES
(
ID INTEGER,
NOME VARCHAR(50)
);
DCL – Data Control Language
Controle de segurança.
GRANT SELECT
ON CLIENTES
TO USER01;
A TABELA É O CORAÇÃO DO DB2
Imagine um arquivo VSAM KSDS.
Agora imagine esse conceito evoluído.
Uma tabela é composta por:
Linhas
Colunas
Relacionamentos
Índices
Constraints
Exemplo:
| ID | NOME | CIDADE |
|---|---|---|
| 1 | ANA | SÃO PAULO |
| 2 | JOÃO | SANTOS |
| 3 | MARIA | RIO |
Essa simplicidade aparente esconde uma enorme complexidade de armazenamento.
SUA PRIMEIRA CONSULTA DE VERDADE
O erro mais comum é usar:
SELECT *
FROM CLIENTES;
Em produção isso costuma ser um desastre.
O profissional experiente utiliza:
SELECT
ID,
NOME,
CIDADE
FROM CLIENTES;
Por quê?
Porque reduz:
I/O
CPU
Network Traffic
Uso de buffer pools
No DB2 13 isso continua sendo uma das melhores práticas.
APRENDENDO A FILTRAR DADOS
O poder real surge com o WHERE.
SELECT
NOME
FROM CLIENTES
WHERE CIDADE = 'SANTOS';
Sem WHERE:
SCAN TOTAL
Com WHERE:
BUSCA DIRECIONADA
Diferença gigantesca.
Principalmente em tabelas com bilhões de linhas.
OPERADORES MAIS UTILIZADOS
Igualdade
WHERE ID = 100
Diferente
WHERE ID <> 100
Maior
WHERE SALARIO > 10000
Menor
WHERE SALARIO < 5000
Intervalo
WHERE SALARIO
BETWEEN 5000 AND 10000
Lista
WHERE CIDADE
IN ('SANTOS','CAMPINAS')
LIKE: A ARMA SECRETA DOS ANALISTAS
SELECT *
FROM CLIENTES
WHERE NOME LIKE 'MAR%';
Retorna:
MARIA
MARCOS
MARCELO
Mas atenção.
LIKE mal utilizado pode destruir a performance.
Exemplo ruim:
LIKE '%MAR%'
O otimizador normalmente perde a possibilidade de usar índices eficientemente.
ORDER BY
Organizando resultados.
SELECT
NOME,
SALARIO
FROM FUNCIONARIOS
ORDER BY SALARIO DESC;
Maior salário primeiro.
Muito simples.
Muito poderoso.
Muito custoso quando mal utilizado.
DISTINCT
Eliminando duplicidades.
SELECT DISTINCT
CIDADE
FROM CLIENTES;
Resultado:
SANTOS
CAMPINAS
RIO
Sem repetições.
CONTANDO REGISTROS
Todo DBA utiliza:
SELECT COUNT(*)
FROM CLIENTES;
Mas poucos iniciantes sabem que em tabelas gigantes isso pode gerar leituras enormes.
Por isso estatísticas e catálogos do DB2 também são utilizados para estimativas.
FUNÇÕES DE AGREGAÇÃO
Soma
SELECT SUM(VALOR)
FROM VENDAS;
Média
SELECT AVG(SALARIO)
FROM FUNCIONARIOS;
Máximo
SELECT MAX(SALARIO)
FROM FUNCIONARIOS;
Mínimo
SELECT MIN(SALARIO)
FROM FUNCIONARIOS;
GROUP BY: ONDE O SQL COMEÇA A FICAR INTERESSANTE
Exemplo:
SELECT
CIDADE,
COUNT(*)
FROM CLIENTES
GROUP BY CIDADE;
Resultado:
| Cidade | Quantidade |
|---|---|
| Santos | 1200 |
| São Paulo | 5800 |
| Campinas | 900 |
Aqui começamos a transformar dados em informação.
HAVING
Filtrando grupos.
SELECT
CIDADE,
COUNT(*)
FROM CLIENTES
GROUP BY CIDADE
HAVING COUNT(*) > 1000;
Somente cidades relevantes aparecem.
JOINS: O SUPERPODER DO SQL
Aqui nasce o verdadeiro banco relacional.
Tabela CLIENTES:
| ID | NOME |
|---|---|
| 1 | ANA |
Tabela PEDIDOS:
| PEDIDO | ID_CLIENTE |
|---|---|
| 100 | 1 |
Consulta:
SELECT
C.NOME,
P.PEDIDO
FROM CLIENTES C
INNER JOIN PEDIDOS P
ON C.ID = P.ID_CLIENTE;
Resultado:
ANA 100
Magia?
Não.
Modelo relacional.
INNER JOIN
Retorna apenas correspondências.
INNER JOIN
É o JOIN mais utilizado do mundo.
LEFT JOIN
Mantém todos os registros da esquerda.
LEFT JOIN
Mesmo sem correspondência.
Muito usado em auditorias.
SUBSELECTS
Uma consulta dentro da outra.
SELECT *
FROM FUNCIONARIOS
WHERE SALARIO >
(
SELECT AVG(SALARIO)
FROM FUNCIONARIOS
);
Funcionários acima da média.
Excelente exemplo de lógica relacional.
SQL E COBOL: UMA DUPLA IMBATÍVEL
Em Mainframe o SQL raramente vive sozinho.
Exemplo Embedded SQL:
EXEC SQL
SELECT NOME
INTO :WS-NOME
FROM CLIENTES
WHERE ID = :WS-ID
END-EXEC.
Esse padrão movimenta bancos, seguradoras, governos e bolsas de valores há décadas.
O PAPEL DO BIND
Iniciantes aprendem SQL.
Profissionais Mainframe aprendem:
Pré-compilação
DBRM
PACKAGE
PLAN
BIND
Sem isso o SQL não chega à produção.
O OTIMIZADOR: O CÉREBRO DO DB2
O usuário escreve:
SELECT *
FROM CLIENTES
WHERE ID = 100;
O DB2 pergunta:
Uso índice?
Faço scan?
Quantas páginas?
Quanto CPU?
Esse processo é chamado:
Access Path Selection
É aqui que a mágica acontece.
EXPLAIN: O RAIO-X DA CONSULTA
Nunca confie apenas porque uma consulta funciona.
Verifique o plano.
EXPLAIN PLAN FOR
SELECT *
FROM CLIENTES;
O DB2 mostrará:
Índices usados
Custo estimado
Estratégias de acesso
DBAs vivem nessa análise.
O QUE MUDA NO DB2 13?
O DB2 13 trouxe avanços importantes:
Melhor exploração de estatísticas
O otimizador toma decisões mais inteligentes.
Melhor uso de CPU
Redução de consumo em workloads intensos.
Aprimoramentos em SQL Analytics
Funções analíticas mais eficientes.
Melhor integração híbrida
Conectividade moderna com APIs e aplicações distribuídas.
Evolução contínua do Machine Learning para otimização
Capacidade crescente de melhorar decisões de acesso com base em padrões observados.
ERROS CLÁSSICOS DOS INICIANTES
SELECT *
Evite.
Falta de índice
Performance despenca.
WHERE inadequado
Full table scan.
JOIN sem critério
Explosão de registros.
UPDATE sem WHERE
O terror dos DBAs.
UPDATE CLIENTES
SET STATUS='A';
Toda tabela alterada.
Acidente clássico.
O CAMINHO PARA VIRAR ESPECIALISTA
Etapa 1
Dominar SELECT.
Etapa 2
Dominar filtros.
Etapa 3
Dominar JOINs.
Etapa 4
Entender índices.
Etapa 5
Aprender EXPLAIN.
Etapa 6
Estudar catálogo DB2.
Etapa 7
Entender RUNSTATS.
Etapa 8
Compreender Access Paths.
Etapa 9
SQL embarcado em COBOL.
Etapa 10
Otimização avançada.
CONCLUSÃO: SQL É A NOVA LINGUAGEM UNIVERSAL DO MAINFRAME
Muitos profissionais acreditam que dominar COBOL é suficiente para trabalhar em Mainframe.
Não é.
O mercado moderno exige uma combinação poderosa:
COBOL
JCL
CICS
RACF
DB2
SQL
E dentro desse conjunto, SQL ocupa uma posição privilegiada.
Toda aplicação corporativa depende dele.
Toda API consulta dados através dele.
Toda IA corporativa precisa dele.
Todo analista precisa entendê-lo.
O segredo não é decorar comandos.
O segredo é compreender o que acontece por trás deles.
Quando você entende como o DB2 13 interpreta uma consulta, escolhe índices, calcula custos, acessa páginas e otimiza recursos, deixa de ser apenas alguém que escreve SQL.
Você passa a pensar como o próprio banco de dados.
E, no universo Bellacosa Mainframe, é exatamente aí que começa a verdadeira jornada: não em aprender comandos, mas em aprender a conversar com um dos sistemas mais sofisticados já construídos pela engenharia da computação.
☕🚀 Bem-vindo ao mundo do DB2 13. O primeiro SELECT é simples. O desafio real é transformar consultas em performance, conhecimento e valor para o negócio.