Toggle menu
Toggle preferences menu
Toggle personal menu
Neprihlásený/á
Your IP address will be publicly visible if you make any edits.
Vytvorená stránka „Hlavné SQL príkazy, filtrovanie dát a agregačné dotazy. {{Pojmová mapa}} == Hlavné SQL príkazy == === Manipulácia s údajmi === <code>INSERT</code>, <code>UPDATE</code>, <code>DELETE</code>, <code>SELECT</code> === Definovanie štruktúry === <code>CREATE</code>, <code>ALTER</code>, <code>DROP</code>, <code>VIEW</code> == Filtrovanie dát == <code>WHERE</code>, <code>GROUP BY</code>, <code>HAVING</code> == Poddotazy == Poddotaz je SQL dotaz vložený…“
 
Bez shrnutí editace
Riadok 22: Riadok 22:
#* Vráti predne jeden riadok, používa sa s operátormi porovnania (<code>=</code>, <code><</code>, <code>></code>) ;<syntaxhighlight lang="sql">
#* Vráti predne jeden riadok, používa sa s operátormi porovnania (<code>=</code>, <code><</code>, <code>></code>) ;<syntaxhighlight lang="sql">
SELECT meno FROM zamestnanci
SELECT meno FROM zamestnanci
WHERE plat > (SELECT AVG(plat) FROM zamestnanci);
WHERE plat > (
  SELECT AVG(plat) FROM zamestnanci
);
-- mená zamestnancov, ktorých plat je vyšší ako priemerný plat všetkých zamestnancov
-- mená zamestnancov, ktorých plat je vyšší ako priemerný plat všetkých zamestnancov
</syntaxhighlight>
</syntaxhighlight>
Riadok 28: Riadok 30:
#* Vráti viacero riadkov, používa sa s klauzulami <code>IN</code>, <code>ANY</code>, <code>ALL</code>;<syntaxhighlight lang="sql">
#* Vráti viacero riadkov, používa sa s klauzulami <code>IN</code>, <code>ANY</code>, <code>ALL</code>;<syntaxhighlight lang="sql">
SELECT meno FROM zamestnanci
SELECT meno FROM zamestnanci
WHERE oddelenie_id IN (SELECT oddelenie_id FROM oddelenia WHERE mesto = 'Bratislava');
WHERE oddelenie_id IN (
  SELECT oddelenie_id FROM oddelenia
  WHERE mesto = 'Bratislava'
);
-- mená zamestnancov, ktorí pracujú v oddeleniach so sídlom v Bratislave
-- mená zamestnancov, ktorí pracujú v oddeleniach so sídlom v Bratislave
</syntaxhighlight>
</syntaxhighlight>
Riadok 44: Riadok 49:
#* Výsledok poddotazu sa správa ako dočasná tabuľka;<syntaxhighlight lang="sql">
#* Výsledok poddotazu sa správa ako dočasná tabuľka;<syntaxhighlight lang="sql">
SELECT oddelenie_id, AVG(plat) FROM (
SELECT oddelenie_id, AVG(plat) FROM (
   SELECT * FROM zamestnanci WHERE vek > 30
   SELECT * FROM zamestnanci
  WHERE vek > 30
) AS podtabulka
) AS podtabulka
GROUP BY oddelenie_id;
GROUP BY oddelenie_id;

Verzia z 17:46, 4. január 2025

Hlavné SQL príkazy, filtrovanie dát a agregačné dotazy.


Hlavné SQL príkazy

Manipulácia s údajmi

INSERT, UPDATE, DELETE, SELECT

Definovanie štruktúry

CREATE, ALTER, DROP, VIEW

Filtrovanie dát

WHERE, GROUP BY, HAVING

Poddotazy

Poddotaz je SQL dotaz vložený do iného dotazu. Slúži na získanie medzivýsledkov, ktoré sa následne použijú v hlavnom dotaze. Poddotazy môžu byť použité v rôznych častiach SQL príkazu, ako sú klauzuly SELECT, WHERE, alebo FROM.

Rozlišujeme niekoľko typov poddotazov:

  1. Jednoduchý (single-row) poddotaz:
    • Vráti predne jeden riadok, používa sa s operátormi porovnania (=, <, >) ;
      SELECT meno FROM zamestnanci
      WHERE plat > (
        SELECT AVG(plat) FROM zamestnanci
      );
      -- mená zamestnancov, ktorých plat je vyšší ako priemerný plat všetkých zamestnancov
      
  2. Viacriadkový (multi-row) poddotaz:
    • Vráti viacero riadkov, používa sa s klauzulami IN, ANY, ALL;
      SELECT meno FROM zamestnanci
      WHERE oddelenie_id IN (
        SELECT oddelenie_id FROM oddelenia
        WHERE mesto = 'Bratislava'
      );
      -- mená zamestnancov, ktorí pracujú v oddeleniach so sídlom v Bratislave
      
  3. Viacstĺpcový (multi-column) poddotaz:
    • Vráti viacero riadkov a stĺpcov (atribútov), používa sa najmä v klauzule EXISTS alebo pri vkladaní dát.
      SELECT * FROM produkty
      WHERE
        (cena, pocet_v_sklade) IN (
          SELECT cena, pocet_v_sklade FROM dodavky
          WHERE dodavatel_id = 3
        );
      -- produkty, ktoré majú rovnakú cenu a množstvo ako dodávky od dodávateľa č. 3
      
  4. Odvodená tabuľka (poddotaz v klauzule FROM):
    • Výsledok poddotazu sa správa ako dočasná tabuľka;
      SELECT oddelenie_id, AVG(plat) FROM (
        SELECT * FROM zamestnanci
        WHERE vek > 30
      ) AS podtabulka
      GROUP BY oddelenie_id;
      -- priemerné platy v oddeleniach, ale iba pre zamestnancov starších ako 30 rokov
      

Agregačné funkcie

Agregačné funkcie slúžia na zhrnutie (agregáciu) hodnôt v skupinách alebo nad celou tabuľkou.

Patria sem napríklad funkcie AVG(), MIN(), MAX(), COUNT() a SUM().