Slike, ki jih Freepik
SQL ali Standard Query Language je programski jezik za upravljanje in obdelavo podatkov v sistemu za upravljanje relacijskih baz podatkov (RDBMS). To je standardni jezik, ki se uporablja v številnih podjetjih za pomoč podjetjem pri nemotenem dostopu do podatkov. Ker se pogosto uporablja, zaposlitev običajno navaja SQL kot eno od potrebnih znanj. Zato je bistvenega pomena, da se naučimo o SQL.
Ena od pogostih težav ljudi pri učenju SQL je razumevanje poizvedb, predvsem ko jih napiše druga oseba. V podjetjih bi delali kot ekipa in pogosto moramo brati in razumeti njihove poizvedbe SQL. Zato moramo vaditi dekonstrukcijo poizvedb SQL in jih razumeti.
Ta članek bo vodil skozi postopek po korakih za branje in razumevanje poizvedb SQL. Kako to naredimo? Pojdimo k temu.
Prva stvar, ki jo moramo narediti, ko naletimo na poizvedbo SQL, je razumeti splošni namen poizvedb SQL. Splošni namen ne pomeni, da v celoti poznamo strukturo poizvedbe; gre bolj za splošne tokove.
Razumeti moramo standardne poizvedbe SQL, da bi razumeli splošno poizvedbo SQL. Večina poizvedb SQL se začne z IZBIRA klavzulo in sledite z OD klavzula. Če nadaljujemo od tam, poizvedbam najpogosteje sledi PRIDRUŽITE, KJE, GROUP BY, NAROČI PO, in HAVING klavzule.
Zgornji členi so standardni v poizvedbah SQL, ki jih moramo razumeti. Za vsako klavzulo so njihove funkcije:
- IZBIRA: Katere stolpce je treba vzeti iz tabele
- OD: iz katere tabele so podatki
- PRIDRUŽITE: Združi tabele z navedenim identifikatorjem
- KJE: Podatkovni filter glede na stanje
- GROUP BY: Organizirajte podatke na podlagi vrednosti stolpca in omogočite izvajanje funkcije združevanja.
- ORDER BY: Razporedite vrstni red rezultatov podatkov glede na določen stolpec
- HAVING: Pogoj filtra za funkcijo združevanja, ki ga ni mogoče podati z KJE
To so standardni členi in tisto, kar bi morali najti na začetku, ko razumete splošno strukturo poizvedbe SQL. Za nadaljnje učenje uporabimo primer kode.
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;
Ko pogledate zgornjo poizvedbo, poskusite prepoznati standardne klavzule. Klavzula bi vam zagotovila razumevanje, kateri podatki so izbrani (IZBIRA), od koder je (OD in PRIDRUŽITE), in pogoj (KJE, GROUP BY, ORDER BYin HAVING).
Če na primer preberete zgornjo poizvedbo, boste razumeli naslednje:
- poskušamo pridobiti tri različne vrste podatkov: ime iz tabele, imenovane kupci, izdelek iz tabele, imenovane nakupi, in združevanje stolpcev s cenami, ki ne identificirajo, od kod je tabela, in z vzdevkom total_price (podatki iz klavzule IZBIRA).
- Celotni podatki bi izhajali iz tabel nakupov in strank, ki se združijo z uporabo stolpca cust_id iz nakupov in stolpca id iz tabele strank (informacije iz klavzule OD) in PRIDRUŽITE).
- Podatke z vrednostjo stolpca kategorije v tabeli nakupov bi izbrali samo kot 'kuhinja' (Informacije iz klavzule KJE),
- skupino za funkcijo združevanja z imenom in stolpcem izdelka, ki izvira iz ustrezne tabele (Informacije iz klavzule GROUP BY),
- filtriran tudi iz vsote rezultatov funkcije združevanja, kjer je skupna_cena večja od 10000 (informacije iz klavzule HAVING), In
- razporedi podatke padajoče glede na total_price (podatki iz klav ORDER BY).
To je splošna struktura poizvedbe SQL, ki jo morate poznati in prepoznati. Od tam lahko raziskujemo dlje od napredne poizvedbe. Nadaljujmo z naslednjim korakom.
Prišel bi čas, ko bi naleteli na zapleteno poizvedbo, kjer je toliko IZBIRA klavzule obstajajo v isti poizvedbi. V tem primeru bi morali razumeti končni rezultat poizvedbe ali končni (prvi) IZBIRA vidite v poizvedbi. Ključno je vedeti, kakšen želi biti rezultat poizvedbe.
Uporabimo bolj zapleteno kodo, kot je spodnja.
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;
Poizvedba se zdaj zdi bolj zapletena in daljša, vendar bi se morali najprej osredotočiti na končno IZBERI, za katerega se zdi, da poskuša ustvariti kupčevo celotno zgodovino porabe in nakupov. Poskusite oceniti, kakšen želi biti končni rezultat, in ga od tam razčlenite.
Imamo vpogled v rezultat, ki bi moral biti iz poizvedb. Naslednji del je videti, kakšni so pogoji za finale IZBIRA so. Klavzula o pogojih, vključno KJE, GROUP BY, ORDER BYin HAVING so bili tisti, ki so nadzorovali skupni rezultat podatkov.
Poskusite prebrati in razumeti pogoje naše poizvedbe in bolje bomo razumeli končni rezultat naše poizvedbe. Na primer, v naši prejšnji poizvedbi SQL je končni pogoj le ORDER BY. To pomeni, da bi bil končni rezultat razvrščen po skupni ceni izdelka v padajočem vrstnem redu.
Poznavanje končnih pogojev bi vam pomagalo razumeti pomemben del poizvedbe in splošni namen poizvedbe.
Nazadnje moramo razumeti, od kod prihajajo podatki. Ko vemo, katere podatke je treba izbrati, in pogoje za njihovo pridobitev, moramo razumeti vir. Konec PRIDRUŽITE klavzula bi nam dala razumevanje medsebojnega delovanja tabel in pretoka podatkov.
Na primer, prejšnja kompleksna poizvedba kaže, da smo Join izvedli dvakrat. To pomeni, da smo za končni rezultat uporabili vsaj tri vire podatkov. Te informacije bi bile potrebne v poznejših korakih za nadaljnje razumevanje, kako pride do posameznega vira podatkov, zlasti če vir podatkov prihaja iz podpoizvedbe.
Ko razumemo, kakšen bi moral biti končni rezultat in od kod prihaja, si moramo podrobneje ogledati podrobnosti. Od tu naprej bi se vrnili v vsako podpoizvedbo in razumeli, zakaj so tako strukturirane.
Vendar jih ne poskušamo gledati v strukturah od zgoraj navzdol. Namesto tega bi morali poskusiti pogledati podpoizvedbe, ki so bližje končnemu rezultatu, in se pomakniti do tiste, ki je najbolj oddaljena od končnega rezultata. Iz zgornjega primera kode bi morali najprej poskusiti razumeti to kodo:
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
Nato se premaknemo na najbolj oddaljeno kodo, ki je ta:
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
)
Miselni proces avtorja lahko jasno izsledimo, ko vsako podpoizvedbo razdelimo od tiste, ki je bližje rezultatu, do najbolj oddaljene.
Poskusite ponoviti zgornji postopek, če potrebujete pomoč pri razumevanju vsake podpoizvedbe. Z nekaj vaje boste imeli boljšo izkušnjo pri branju in razumevanju poizvedbe.
Branje in razumevanje SQL poizvedb je veščina, ki bi jo v moderni dobi moral imeti vsak, saj se z njimi ukvarja vsako podjetje. Z uporabo naslednjega vodnika po korakih bi bolje razumeli kompleksne poizvedbe SQL. Koraki vključujejo:
- Razumevanje splošne strukture poizvedbe SQL
- Razumeti končno izbiro
- Razumeti klavzulo o končnih pogojih
- Razumeti končno združitev
- Branje v obratnem vrstnem redu in ponovitev
Cornellius Yudha Wijaya je vodja podatkovne znanosti in pisec podatkov. Medtem ko dela s polnim delovnim časom pri Allianz Indonesia, rad deli nasvete o Pythonu in podatkih prek družbenih medijev in pisnih medijev.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- vir: https://www.kdnuggets.com/a-step-by-step-guide-to-reading-and-understanding-sql-queries?utm_source=rss&utm_medium=rss&utm_campaign=a-step-by-step-guide-to-reading-and-understanding-sql-queries
- : je
- :ne
- :kje
- $GOR
- 12
- 17
- 9
- a
- O meni
- nad
- dostop
- Po
- napredno
- po
- združevanje
- Allianz
- omogočajo
- an
- in
- Še ena
- SE
- članek
- AS
- oceniti
- Pomočnik
- At
- Avtor
- temeljijo
- BE
- ker
- Začetek
- spodaj
- Boljše
- Break
- podjetja
- vendar
- by
- se imenuje
- prišel
- CAN
- ne more
- primeru
- Kategorija
- jasno
- bližje
- Koda
- Stolpec
- Stolpci
- združujejo
- kako
- prihaja
- prihajajo
- Skupno
- Podjetja
- podjetje
- kompleksna
- stanje
- Pogoji
- nadaljevati
- nadzorom
- cs
- stranka
- Stranke, ki so
- datum
- znanost o podatkih
- Baze podatkov
- Ponudba
- Podrobnosti
- drugačen
- do
- Ne
- dont
- navzdol
- vsak
- zaposlovanja
- srečanje
- srečanje
- popolnoma
- Era
- zlasti
- bistvena
- Tudi vsak
- vsi
- Primer
- obstajajo
- izkušnje
- raziskuje
- filter
- končna
- Najdi
- prva
- Pretok
- Tokovi
- Osredotočite
- sledi
- sledili
- po
- za
- iz
- funkcija
- funkcije
- nadalje
- splošno
- dobili
- Daj
- skupina
- vodi
- Imajo
- ob
- he
- pomoč
- tukaj
- zgodovina
- Kako
- HTTPS
- ID
- identifikator
- identificirati
- if
- in
- vključujejo
- Vključno
- Indonezija
- Podatki
- začetna
- vpogled
- Namesto
- Namen
- interakcijo
- v
- IT
- pridružite
- jpg
- KDnuggets
- Ključne
- vrste
- Vedite
- jezik
- pozneje
- UČITE
- učenje
- vsaj
- kot
- več
- Poglej
- ljubi
- v glavnem
- upravljanje
- upravljalni sistem
- upravitelj
- upravljanje
- manipuliranje
- več
- pomeni
- pomeni
- mediji
- sodobna
- več
- Najbolj
- premikanje
- premikanje
- Ime
- potrebno
- Nimate
- Naslednja
- zdaj
- of
- pogosto
- on
- ONE
- tiste
- samo
- or
- Da
- naši
- izhod
- Splošni
- del
- ljudje
- opravljeno
- oseba
- platon
- Platonova podatkovna inteligenca
- PlatoData
- praksa
- prejšnja
- Cena
- Težave
- Postopek
- proizvodnjo
- Izdelek
- Programiranje
- zagotavljajo
- nakup
- nakupi
- Python
- poizvedbe
- poizvedba
- Preberi
- reading
- ponovite
- tisti,
- povzroči
- nazaj
- s
- Enako
- Znanost
- glej
- Zdi se,
- izberite
- izbran
- Delite s prijatelji, znanci, družino in partnerji :-)
- shouldnt
- Razstave
- pomemben
- spretnost
- spretnosti
- gladko
- So
- socialna
- družbeni mediji
- nekaj
- vir
- Viri
- specifična
- določeno
- Poraba
- SQL
- standardna
- Začetek
- Korak
- Koraki
- Struktura
- strukturirano
- strukture
- vsota
- sistem
- miza
- sprejeti
- skupina
- kot
- da
- O
- Vir
- njihove
- Njih
- Tukaj.
- jih
- stvar
- ta
- mislil
- 3
- skozi
- čas
- nasveti
- do
- skupaj
- Skupaj za plačilo
- sledenje
- poskusite
- Dvakrat
- razumeli
- razumevanje
- us
- uporaba
- Rabljeni
- uporabo
- navadno
- vrednost
- preko
- sprehod
- želi
- we
- Dobro
- Kaj
- kdaj
- ki
- medtem
- zakaj
- pogosto
- bo
- z
- v
- delo
- deluje
- bi
- bi dal
- Pisatelj
- pisanje
- jo
- zefirnet