Eine Schritt-für-Schritt-Anleitung zum Lesen und Verstehen von SQL-Abfragen – KDnuggets

Eine Schritt-für-Schritt-Anleitung zum Lesen und Verstehen von SQL-Abfragen – KDnuggets

Quellknoten: 3091384

Eine Schritt-für-Schritt-Anleitung zum Lesen und Verstehen von SQL-Abfragen
Bild von Freepik
 

SQL oder Standard Query Language ist eine Programmiersprache zur Verwaltung und Bearbeitung von Daten innerhalb eines relationalen Datenbankverwaltungssystems (RDBMS). Es handelt sich um eine Standardsprache, die in vielen Unternehmen verwendet wird, um ihnen einen reibungslosen Datenzugriff zu ermöglichen. Da es weit verbreitet ist, wird in der Anstellung in der Regel SQL als eine der erforderlichen Fähigkeiten genannt. Deshalb ist es wichtig, etwas über SQL zu lernen.

Eines der häufigsten Probleme beim Erlernen von SQL ist das Verstehen der Abfragen, vor allem dann, wenn eine andere Person sie schreibt. Wir arbeiteten als Team in den Unternehmen und mussten oft deren SQL-Abfragen lesen und verstehen. Wir müssen also üben, die SQL-Abfragen zu dekonstruieren und sie zu verstehen.

In diesem Artikel wird Schritt für Schritt durch den Prozess zum Lesen und Verstehen von SQL-Abfragen geführt. Wie machen wir das? Lasst uns darauf eingehen.

Das erste, was wir tun müssen, wenn wir auf eine SQL-Abfrage stoßen, ist, die allgemeine Absicht der SQL-Abfragen zu verstehen. Die allgemeine Absicht bedeutet nicht, dass wir die Struktur der Abfrage vollständig kennen. es geht mehr um die Gesamtströme.

Wir sollten die Standard-SQL-Abfragen verstehen, um die allgemeine SQL-Abfrage zu verstehen. Die meisten SQL-Abfragen beginnen mit SELECT Klausel und folgen Sie mit der AB Klausel. Von dort aus folgen die Abfragen am häufigsten JOIN, WO, GRUPPIERE NACH, SORTIEREN NACH, und HABEN Klauseln.

Die obigen Klauseln sind Standard in den SQL-Abfragen, die wir verstehen müssen. Für jede Klausel sind ihre Funktionen:

  1. SELECT: Welche Spalten sollen der Tabelle entnommen werden
  2. AB: Aus welcher Tabelle die Daten stammen
  3. JOIN: Tabellen mit dem angegebenen Bezeichner kombinieren
  4. WO: Datenfilter basierend auf der Bedingung
  5. GRUPPIERE NACH: Organisieren Sie die Daten basierend auf dem Wert der Spalte und ermöglichen Sie die Ausführung der Aggregationsfunktion.
  6. SORTIEREN NACH: Ordnen Sie die Reihenfolge der Datenergebnisse basierend auf der spezifischen Spalte an
  7. HABEN: Die Filterbedingung für die Aggregationsfunktion, die nicht mit angegeben werden kann WO

Dies sind die Standardklauseln und das, was Sie am Anfang finden sollten, wenn Sie die allgemeine SQL-Abfragestruktur verstehen. Lassen Sie uns den Beispielcode verwenden, um mehr zu erfahren.

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;

 

Versuchen Sie beim Betrachten der obigen Abfrage, die Standardklauseln zu identifizieren. Die Klausel würde Ihnen ein Verständnis dafür vermitteln, welche Daten ausgewählt werden (SELECT), woher es kommt (AB und JOIN) und die Bedingung (WO, GRUPPIERE NACH, SORTIEREN NACH und HABEN). 

Wenn Sie beispielsweise die obige Abfrage lesen, verstehen Sie Folgendes:

  1. Wir versuchen, drei verschiedene Arten von Daten abzurufen: den Namen aus einer Tabelle namens „Kunden“, das Produkt aus einer Tabelle namens „Käufe“ und die Aggregation von Preisspalten, die nicht angeben, woher die Tabelle stammt, und mit dem Alias ​​„total_price“ (Informationen aus der Klausel). SELECT). 
  1. Die Gesamtdaten würden aus den Tabellen „Käufe“ und „Kunden“ stammen, die mithilfe der Spalte „cust_id“ aus „Käufen“ und der Spalte „id“ aus der Tabelle „Kunde“ (Information from-Klausel) zusammengeführt werden AUS) und JOIN). 
  1. Wir würden nur die Daten mit dem Kategoriespaltenwert in der Einkaufstabelle als „Küche“ auswählen (Informationen aus der Klausel). WO), 
  1. Gruppe für die Aggregationsfunktion mit dem Namen und der Produktspalte, die aus der jeweiligen Tabelle stammen (Information from-Klausel). GRUPPIERE NACH), 
  1. Wird auch aus der Ergebnissumme der Aggregationsfunktion gefiltert, wenn der Gesamtpreis mehr als 10000 beträgt (Informationen aus Klausel HABEN), Und 
  1. Ordnen Sie die Daten absteigend entsprechend dem Gesamtpreis (Informationen aus der Klausel). SORTIEREN NACH).

Das ist die allgemeine SQL-Abfragestruktur, die Sie kennen und identifizieren müssen. Von dort aus können wir die erweiterte Abfrage weiter untersuchen. Machen wir mit dem nächsten Schritt weiter.

Es würde eine Zeit geben, in der Sie auf eine komplexe Abfrage stoßen würden, bei der es so viele gibt SELECT Klauseln sind in derselben Abfrage vorhanden. In diesem Fall sollten wir das Endergebnis der Abfrage oder das endgültige (erste) verstehen. SELECT Sie sehen in der Abfrage. Der Schlüssel besteht darin, zu wissen, wie die Abfrageausgabe aussehen soll.

Lassen Sie uns einen komplexeren Code wie den folgenden verwenden.

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;

 

Die Abfrage scheint jetzt komplexer und länger zu sein, aber der Fokus sollte zunächst auf dem Endergebnis liegen AUSWÄHLEN, Dies scheint zu versuchen, die gesamte Ausgaben- und Kaufhistorie des Kunden zu ermitteln. Versuchen Sie abzuschätzen, wie das Endergebnis aussehen soll, und schlüsseln Sie es von dort aus auf.

Wir haben die Einsicht, dass das Ergebnis aus den Abfragen stammen sollte. Im nächsten Teil geht es darum, die Bedingungen für das Finale zu prüfen SELECT Sind. Die Bedingungenklausel, einschließlich WO, GRUPPIERE NACH, SORTIEREN NACH und HABEN waren diejenigen, die das Gesamtdatenergebnis kontrollierten. 

Versuchen Sie, die Bedingungen unserer Abfrage zu lesen und zu verstehen, damit wir das Endergebnis unserer Abfrage besser verstehen. In unserer vorherigen SQL-Abfrage ist die Endbedingung beispielsweise nur die SORTIEREN NACH. Das bedeutet, dass das Endergebnis nach dem Gesamtproduktpreis in absteigender Reihenfolge sortiert wird. 

Die Kenntnis der Endbedingungen würde Ihnen helfen, einen wesentlichen Teil der Abfrage und die allgemeine Abfrageabsicht zu verstehen.

Schließlich müssen wir verstehen, woher die Daten kommen. Nachdem wir die auszuwählenden Daten und die Bedingungen für deren Erhalt kennen, müssen wir die Quelle verstehen. Das endgültige JOIN Die Klausel würde uns ein Verständnis für die Interaktion der Tabellen und den Datenfluss vermitteln.

Die vorherige komplexe Abfrage zeigt beispielsweise, dass wir Join zweimal ausgeführt haben. Das bedeutet, dass wir für das Endergebnis mindestens drei Datenquellen verwendet haben. Diese Informationen wären in den späteren Schritten erforderlich, um besser zu verstehen, wie jede Datenquelle zustande kommt, insbesondere wenn die Datenquelle aus der Unterabfrage stammt.

Nachdem wir verstanden haben, wie das Endergebnis aussehen sollte und woher es kommt, müssen wir uns die Details genauer ansehen. Von hier aus würden wir zu den einzelnen Unterabfragen zurückkehren und verstehen, warum sie so strukturiert sind.

Wir versuchen jedoch nicht, sie in den Top-Down-Strukturen zu betrachten. Stattdessen sollten wir versuchen, uns die Unterabfragen anzusehen, die näher am Endergebnis liegen, und dann zu der Unterabfrage übergehen, die am weitesten vom Endergebnis entfernt ist. Aus dem obigen Codebeispiel sollten wir zunächst versuchen, diesen Code zu verstehen:

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

 

Dann gehen wir zum am weitesten entfernten Code über, nämlich diesem:

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
)

 

Wir können den Denkprozess des Autors deutlich nachvollziehen, wenn wir jede Unterabfrage von derjenigen, die näher am Ergebnis liegt, bis zur am weitesten entfernten Unterabfrage aufschlüsseln. 

Versuchen Sie, den obigen Vorgang zu wiederholen, wenn Sie Hilfe beim Verständnis der einzelnen Unterabfragen benötigen. Mit etwas Übung werden Sie die Abfrage besser lesen und verstehen können.

Das Lesen und Verstehen von SQL-Abfragen ist eine Fähigkeit, die heutzutage jeder haben sollte, da sich jedes Unternehmen mit ihnen beschäftigt. Mithilfe der folgenden Schritt-für-Schritt-Anleitung können Sie die komplexen SQL-Abfragen besser verstehen. Die Schritte umfassen:

  1. Verstehen Sie die allgemeine SQL-Abfragestruktur
  2. Verstehen Sie die endgültige Auswahl
  3. Verstehen Sie die Schlussbedingungsklausel
  4. Verstehen Sie den endgültigen Join
  5. Lesen Sie in umgekehrter Reihenfolge und wiederholen Sie den Vorgang

 
 

Cornellius Yudha Wijaya ist Data Science Assistant Manager und Data Writer. Während er Vollzeit bei Allianz Indonesien arbeitet, liebt er es, Python- und Datentipps über soziale Medien zu teilen und Medien zu schreiben.

Zeitstempel:

Mehr von KDnuggets