Samm-sammuline juhend SQL-päringute lugemiseks ja mõistmiseks – KDnuggets

Samm-sammuline juhend SQL-päringute lugemiseks ja mõistmiseks – KDnuggets

Allikasõlm: 3091384

Samm-sammuline juhend SQL-päringute lugemiseks ja mõistmiseks
Image by Freepik
 

SQL ehk Standard Query Language on programmeerimiskeel andmete haldamiseks ja manipuleerimiseks relatsioonilise andmebaasi haldussüsteemis (RDBMS). See on paljudes ettevõtetes kasutatav standardkeel, mis aitab ettevõtetel andmetele sujuvalt juurde pääseda. Kuna seda kasutatakse laialdaselt, nimetab töökoht tavaliselt ühe vajaliku oskusena SQL-i. Sellepärast on oluline SQL-i tundma õppida.

Üks levinumaid probleeme inimeste jaoks SQL-i õppimisel on päringute mõistmine, peamiselt siis, kui teine ​​inimene neid kirjutab. Töötame ettevõtetes meeskonnana ja peame sageli lugema ja mõistma nende SQL-päringuid. Seega peame harjutama SQL-päringute dekonstrueerimist ja neist aru saama.

Selles artiklis kirjeldatakse samm-sammult SQL-päringute lugemise ja mõistmise protsessi. Kuidas me seda teeme? Lähme sellesse.

The first thing we need to do when encountering an SQL query is to understand the general intention of the SQL queries. The general intention doesn’t mean we know entirely about the query’s structure; it’s more about the overall flows.

Üldise SQL-päringu mõistmiseks peaksime mõistma standardseid SQL-päringuid. Enamik SQL-päringuid algab tähega SELECT klausel ja järgige ALATES klausel. Sealt edasi jätkates järgneb päringutele kõige sagedamini LIITU, KUS, GROUP BY, TELLI, ja VÕIMALIK klauslid.

Ülaltoodud klauslid on standardsed SQL-päringutes, mida peame mõistma. Iga klausli puhul on nende funktsioonid järgmised:

  1. SELECT: Millised veerud tuleb tabelist võtta
  2. ALATES: Millisest tabelist andmed pärinevad
  3. LIITU: kombineerige tabelid määratud identifikaatoriga
  4. KUS: tingimusel põhinev andmefilter
  5. GROUP BY: Organize the data based on the column’s value and allow aggregation function to be performed.
  6. TELLI: korraldage andmetulemuste järjekord konkreetse veeru alusel
  7. VÕIMALIK: koondamisfunktsiooni filtritingimus, mida ei saa määrata KUS

Need on standardklauslid ja need, mida peaksite SQL päringu üldise struktuuri mõistmisel alguses leidma. Lisateabe saamiseks kasutage näidiskoodi.

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;

 

Kui vaatate ülaltoodud päringut, proovige tuvastada standardklauslid. Klausel annaks teile ülevaate sellest, millised andmed on valitud (SELECT), kust see on pärit (ALATES ja LIITU) ja tingimus (KUS, GROUP BY, TELLIja VÕIMALIK). 

Näiteks ülaltoodud päringu lugemine annaks teile ülevaate järgmisest:

  1. püüame hankida kolme erinevat tüüpi andmeid: nimi tabelist nimega kliendid, toode tabelist nimega ostud ja hinnaveergude koondamine, mis ei tuvasta, kust tabel on pärit, ja koos varjunimega total_price (teave klauslist SELECT). 
  1. The overall data would come from purchases and customers tables that join together using the cust_id column from purchases and the id column from the customer’s table (Information from clause FROM) ja LIITU). 
  1. Valiksime ainult need andmed, mille kategooria veeru väärtus ostude tabelis on "köök" (teave klauslist KUS), 
  1. rühm liitmisfunktsiooni jaoks koos nime ja tooteveeruga, mis tulid vastavast tabelist (Teave klauslist GROUP BY), 
  1. filtreeritakse ka koondfunktsiooni tulemuse summast, kus summa_price on suurem kui 10000 (teave klauslist VÕIMALIK), Ja 
  1. järjesta andmed kahanevas järjestuses vastavalt summa_hinnale (info punktist TELLI).

See on üldine SQL-päringu struktuur, mida peate teadma ja tuvastama. Sealt saame täpsema päringu kaudu edasi uurida. Jätkame järgmise sammuga.

Tuleks aeg, mil kohtaksite keerulist päringut, kus nii palju SELECT klauslid on samas päringus olemas. Sel juhul peaksime mõistma päringu lõpptulemust või lõplikku (esimest) SELECT näete päringus. Peamine on teada, milline päringu väljund olla tahab.

Kasutame keerukamat koodi, nagu allpool toodud.

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;

 

Päring tundub praegu keerulisem ja pikem, kuid esialgne keskendumine peaks olema lõplik VALI, mis näib üritavat toota kliendi kogukulutuste ja ostude ajalugu. Proovige hinnata, milline lõpptulemus olla tahab, ja lahutage see sealt edasi.

Meil on arusaam, et tulemus peaks pärinema. Järgmine osa on näha, millised on finaali tingimused SELECT on. Tingimuste klausel, sealhulgas KUS, GROUP BY, TELLIja VÕIMALIK olid need, mis kontrollisid üldist andmetulemust. 

Try to read and understand our query’s conditions, and we will better understand our query’s final result. For example, in our previous SQL query, the final condition is only the TELLI. See tähendab, et lõpptulemus järjestatakse toote koguhinna järgi kahanevas järjekorras. 

Lõplike tingimuste teadmine aitaks teil mõista päringu olulist osa ja üldist päringu eesmärki.

Lõpuks peame mõistma, kust andmed pärinevad. Pärast seda, kui oleme teada valitavate andmete ja nende hankimise tingimuste kohta, peame mõistma allikat. Finaal LIITU klausel annaks meile ülevaate tabelite koostoimest ja andmevoost.

Näiteks näitab eelmine keeruline päring, et viisime ühenduse läbi kaks korda. See tähendab, et kasutasime lõpptulemuse saamiseks vähemalt kolme andmeallikat. See teave on vajalik hilisemates etappides, et mõista paremini, kuidas iga andmeallikas pärineb, eriti kui andmeallikas pärineb alampäringust.

Pärast aru saamist, milline peaks olema lõpptulemus ja kust see tuleb, peame üksikasjalikumalt uurima. Siit liigume tagasi iga alampäringu juurde ja mõistame, miks need on nii üles ehitatud.

Kuid me ei püüa neid vaadata ülalt-alla struktuurides. Selle asemel peaksime püüdma vaadata alampäringuid, mis on lõpptulemusele lähemal, ja liikuda lõpptulemusest kõige kaugemal asuvani. Ülaltoodud koodinäite põhjal peaksime kõigepealt proovima sellest koodist aru saada:

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

 

Seejärel liigume kõige kaugema koodi juurde, mis on see:

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
)

 

We can track down the author’s thought process clearly when we break down each subquery from the one closer to the result to the furthest. 

Proovige ülaltoodud protsessi korrata, kui vajate abi iga alampäringu mõistmisel. Mõne harjutamisega saate parema kogemuse päringu lugemisel ja mõistmisel.

SQL-päringute lugemine ja mõistmine on oskus, mis peaks tänapäeval kõigil olema, kuna nendega tegeleb iga ettevõte. Kasutades järgmist samm-sammult juhendit, oleks teil parem aeg keerukatest SQL-päringutest aru saada. Toimingud hõlmavad järgmist:

  1. Mõistke üldist SQL-päringu struktuuri
  2. Mõistke lõplikku valikut
  3. Lõplike tingimuste klausli mõistmine
  4. Mõistke lõplikku liitumist
  5. Lugemine ja kordamine vastupidises järjekorras

 
 

Cornelius Yudha Wijaya on andmeteaduse juhi assistent ja andmete kirjutaja. Allianz Indonesias täiskohaga töötades armastab ta sotsiaalmeedia ja kirjutamismeedia kaudu Pythoni ja Data näpunäiteid jagada.

Ajatempel:

Veel alates KDnuggets