Um guia passo a passo para ler e compreender consultas SQL - KDnuggets

Um guia passo a passo para ler e compreender consultas SQL – KDnuggets

Nó Fonte: 3091384

Um guia passo a passo para ler e compreender consultas SQL
Imagem por Freepik
 

SQL, ou Standard Query Language, é uma linguagem de programação para gerenciar e manipular dados dentro de um sistema de gerenciamento de banco de dados relacional (RDBMS). É uma linguagem padrão usada em muitas empresas para ajudar as empresas a acessar dados sem problemas. Por ser amplamente utilizado, o emprego costuma citar o SQL como uma das habilidades necessárias. É por isso que é essencial aprender sobre SQL.

Um dos problemas comuns para quem aprende SQL é entender as consultas, principalmente quando outra pessoa as escreve. Trabalharíamos em equipe nas empresas e muitas vezes precisaríamos ler e compreender suas consultas SQL. Portanto, precisamos praticar a desconstrução das consultas SQL e entendê-las.

Este artigo percorrerá um processo passo a passo para ler e compreender consultas SQL. Como fazemos isso? Vamos entrar no assunto.

A primeira coisa que precisamos fazer ao encontrar uma consulta SQL é entender a intenção geral das consultas SQL. A intenção geral não significa que conhecemos inteiramente a estrutura da consulta; é mais sobre os fluxos gerais.

Devemos entender as consultas SQL padrão para entender a consulta SQL geral. A maioria das consultas SQL começa com o SELECIONE cláusula e siga com o A PARTIR DE cláusula. Continuando a partir daí, as consultas são geralmente seguidas por Cadastre-se, ONDE, GROUP BY, ORDENAR POR, e TENDO cláusulas.

As cláusulas acima são padrão nas consultas SQL que precisamos entender. Para cada cláusula, suas funções são:

  1. SELECIONE: Quais colunas devem ser retiradas da tabela
  2. A PARTIR DE: De qual tabela os dados vieram
  3. Cadastre-se: Combine tabelas com o identificador especificado
  4. ONDE: Filtro de dados com base na condição
  5. GROUP BY: Organize os dados com base no valor da coluna e permita que a função de agregação seja executada.
  6. ORDENAR POR: organize a ordem dos resultados dos dados com base na coluna específica
  7. TENDO: A condição de filtro para função de agregação que não pode ser especificada com ONDE

Estas são as cláusulas padrão e o que você deve encontrar no início ao compreender a estrutura geral da consulta SQL. Vamos usar o código de exemplo para aprender mais.

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

Ao analisar a consulta acima, tente identificar as cláusulas padrão. A cláusula forneceria uma compreensão de quais dados são selecionados (SELECIONE), de onde é (A PARTIR DE e Cadastre-se) e a condição (ONDE, GROUP BY, ORDENAR POR e TENDO). 

Por exemplo, a leitura da consulta acima forneceria a você a compreensão do seguinte:

  1. tentamos obter três tipos diferentes de dados: o Nome de uma tabela chamada clientes, o Produto de uma tabela chamada compras e a agregação de colunas de preços que não identificam de onde é a tabela e com o alias total_price (Informações da cláusula SELECIONE). 
  1. Os dados gerais viriam das tabelas de compras e clientes que se unem usando a coluna cust_id das compras e a coluna id da tabela do cliente (Informações da cláusula A PARTIR DE) e Cadastre-se). 
  1. Selecionaríamos apenas os dados com o valor da coluna de categoria na tabela de compras como 'cozinha' (Informações da cláusula ONDE), 
  1. grupo para a função de agregação com o nome e a coluna do produto que veio da respectiva tabela (Informações da cláusula GROUP BY), 
  1. filtrado também a partir da soma do resultado da função de agregação onde o total_price é maior que 10000 (informações da cláusula TENDO), E 
  1. ordene os dados em ordem decrescente de acordo com total_price (informações da cláusula ORDENAR POR).

Essa é a estrutura geral de consulta SQL que você precisa conhecer e identificar. A partir daí, podemos explorar mais a partir da consulta avançada. Vamos prosseguir para o próximo passo.

Chegaria um momento em que você encontraria uma consulta complexa onde tantos SELECIONE existem cláusulas na mesma consulta. Neste caso, devemos entender o resultado final da consulta ou o final (primeiro) SELECIONE você vê na consulta. A chave é saber qual será o resultado da consulta.

Vamos usar um código mais complexo como o abaixo.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

A consulta parece mais complexa e mais longa agora, mas o foco inicial deve estar no final SELECIONE, que parece tentar produzir o gasto total e o histórico de compras do cliente. Tente avaliar qual quer ser o resultado final e decompô-lo a partir daí.

Temos a visão do resultado que deve vir das consultas. A próxima parte é ver quais são as condições para a final SELECIONE são. A cláusula de condições, incluindo ONDE, GROUP BY, ORDENAR POR e TENDO foram os que controlaram o resultado geral dos dados. 

Tente ler e entender as condições da nossa consulta, e entenderemos melhor o resultado final da nossa consulta. Por exemplo, em nossa consulta SQL anterior, a condição final é apenas o ORDENAR POR. Isso significa que o resultado final seria ordenado pelo preço total do produto em ordem decrescente. 

Conhecer as condições finais ajudaria você a entender uma parte significativa da consulta e a intenção geral da consulta.

Por último, precisamos entender de onde vêm os dados. Depois de sabermos sobre os dados a serem selecionados e as condições para obtê-los, precisamos entender a fonte. O final Cadastre-se cláusula nos daria uma compreensão de como as tabelas interagem e o fluxo de dados.

Por exemplo, a consulta complexa anterior mostra que realizamos Join duas vezes. Isso significa que usamos pelo menos três fontes de dados para o resultado final. Essas informações seriam necessárias nas etapas posteriores para entender melhor como cada fonte de dados surge, especialmente quando a fonte de dados vem da subconsulta.

Depois de entender como deve ser o resultado final e de onde ele vem, é preciso olhar mais de perto os detalhes. A partir daqui, voltaríamos em cada subconsulta e entenderíamos por que elas estão estruturadas dessa forma.

Contudo, não tentamos observá-los nas estruturas de cima para baixo. Em vez disso, devemos tentar olhar para as subconsultas que estão mais próximas do resultado final e avançar para aquela que está mais distante do resultado final. A partir do exemplo de código acima, devemos tentar entender este código primeiro:

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

Então, estamos passando para o código mais distante, que é este:

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

Podemos rastrear claramente o processo de pensamento do autor quando dividimos cada subconsulta daquela que está mais próxima do resultado até a mais distante. 

Tente repetir o processo acima se precisar de ajuda para entender cada subconsulta. Com alguma prática, você terá uma experiência melhor na leitura e compreensão da consulta.

Ler e compreender consultas SQL é uma habilidade que todos deveriam ter na era moderna, já que toda empresa lida com elas. Usando o guia passo a passo a seguir, você terá mais facilidade para entender as consultas SQL complexas. As etapas incluem:

  1. Compreenda a estrutura geral da consulta SQL
  2. Entenda a seleção final
  3. Entenda a Cláusula das Condições Finais
  4. Entenda a junção final
  5. Leitura e repetição de ordem inversa

 
 

Cornélio Yudha Wijaya é gerente assistente de ciência de dados e redator de dados. Enquanto trabalhava em período integral na Allianz Indonésia, ele adora compartilhar dicas sobre Python e dados nas mídias sociais e na mídia escrita.

Carimbo de hora:

Mais de KDnuggetsGenericName