SQL klauslite mõju uurija

See leht aitab mõista, kuidas erinevad SQL klauslid mõjutavad päringu tulemust.

Sissejuhatus

See interaktiivne tööriist aitab sul samm-sammult mõista, kuidas erinevad SQL-päringu osad (klauslid) mõjutavad lõpptulemust. Päringu loogiline täitmise järjekord on järgmine:

1. FROM/JOIN ➔ 2. WHERE ➔ 3. GROUP BY ➔ 4. HAVING ➔ 5. SELECT ➔ 6. ORDER BY

Vali allpool olevatest valikutest klauslid või kliki ülaloleval indikaatoril, et näha, kuidas päring ja selle tulemus vastavalt muutuvad.

Näidispäring:

-- (Järjekord päringu kirjutamisel on erinev loogilisest täitmisest)
SELECT
    M.magaja_id, M.perenimi, Count(*) AS magamiste_arv
FROM
    Magaja M INNER JOIN Magamine Mn ON M.magaja_id = Mn.magaja_id
WHERE
    Mn.kestus > 30
GROUP BY
    M.magaja_id, M.perenimi
HAVING
    Count(*) > 5
ORDER BY
    magamiste_arv DESC, M.perenimi, M.magaja_id;

Interaktiivne päringu koostamine

Vali päringu osad (vastavalt loogilisele järjekorrale):

Koostatud SQL päring (kirjutamise järjekord):

-- Vali klausleid, et näha päringut --

Päringu tulemus (simuleeritud):

Vali klausleid, et näha tulemustabelit.

Klauslite selgitused

1. FROM / JOIN

Loogiliselt esimene samm: määrab andmete allika(d). Siin ühendatakse Magaja ja Magamine tabelid ühise magaja_id alusel.

2. WHERE

Filtreerib FROM/JOIN sammu tulemusena saadud ridu. Ainult need read, kus kestus > 30, lähevad edasi järgmistesse sammudesse.

3. GROUP BY

Rühmitab WHERE filtri läbinud read. Siin rühmitatakse sama magaja_id ja perenimi väärtusega read kokku.

4. HAVING

Filtreerib GROUP BY loodud gruppe. Töötab sarnaselt WHERE-le, aga gruppide, mitte ridade tasemel. Siin jäetakse alles grupid, kus ridu (magamisi) on rohkem kui 5.

5. SELECT

Valib, millised veerud ja/või arvutatud väärtused lõpptulemusse kaasata. Kui GROUP BY on kasutuses, saab siin kasutada koondandmete leidmise funktsioone e agregeerimisfunktsioone (nagu Count(*)) ja grupeerimise aluseks olnud veerge. Ilma GROUP BY-ta valitakse veerud ridade tasemel.

Tähtis: Kuigi SELECT kirjutatakse SQL päringus tavaliselt esimesena, siis loogiliselt täidetakse see alles pärast FROM, WHERE, GROUP BY, HAVING samme.

6. ORDER BY

Viimane loogiline samm enne tulemuse kuvamist: sorteerib SELECT klauslis määratud read. Siin sorteeritakse magamiste arvu järgi kahanevalt ja seejärel nime ning ID järgi.