SQL Escrita X SQL Execução Lógica
Nesse post tenho como objetivo abordar a diferença entre a sintaxe escrita de uma query SQL e como o SGBD entende e interpreta logicamente a mesma query.
Exemplo da SINTAXE de uma query
SINTAXE
SELECT colunas
FROM tabela
WHERE condições
GROUP BY colunas
ORDER BY colunas
Como o SGBD interpreta a mesma query
EXECUÇÃO DO SGBD
FROM tabela
WHERE condição
GROUP BY colunas
select colunas
order by colunas
Vamos exemplificar um select hipotético.
SINTAXE
SELECT NOME_DO_CLIENTE, TELEFONE, ENDERECO
FROM CLIENTE
ORDER BY ID;
EXECUÇÃO DO SGBD
FROM CLIENTE
SELECT NOME_DO_CLIENTE, TELEFONE, ENDERECO
ORDER BY ID;
Considerando uma query mais completa:
SINTAXE
SELECT colunas
FROM tabela
JOIN tabela2
WHERE condições
GROUP BY colunas
HAVING filtro com funções agregadas + condições
ORDER BY colunas
EXECUÇÃO DO SGBD
FROM tabela
JOIN tabela2
WHERE condições
GROUP BY colunas
HAVING filtro com funções agregadas + condições
SELECT colunas
ORDER BY colunas
É isso.. um pouco sobre o assunto..Abraços!
Deixo agora a seguinte query
SELECT SEXO AS SEXO_M_F_O, IDADE, COUNT(ID) AS QT_POR_SEXO
FROM CLIENTE
WHERE IDADE >= 18
GROUP BY SEXO_M_F_O, IDADE
ORDER BY IDADE DESC
Como uma questão para Vocês me dizer se a query vai funcionar(rodar) ou não?
Referências:
https://oracle.readthedocs.io/en/latest/sql/basics/query-processing-order.html
https://qxf2.com/blog/mysql-query-execution/
https://community.oracle.com/tech/developers/discussion/1558084/select-query-execution-steps-order