Junior
Čo vieš o vzorkoch a spojeniach v databázach?
sobes.tech AI
Odpoveď od AI
Vzorky (dotazy SELECT) extrahujú údaje z jednej alebo viacerých tabuliek. Spojenia (JOIN) kombinujú riadky z dvoch alebo viacerých tabuliek na základe spojenej stĺpca medzi nimi.
Typy spojení:
- INNER JOIN: Vracia riadky, ktoré majú zhody v oboch tabuľkách.
- LEFT JOIN (LEFT OUTER JOIN): Vracia všetky riadky z ľavej tabuľky a zodpovedajúce riadky z pravej. Ak zhoda chýba, vráti
NULLpre pravú tabuľku. - RIGHT JOIN (RIGHT OUTER JOIN): Vracia všetky riadky z pravej tabuľky a zodpovedajúce riadky z ľavej. Ak zhoda chýba, vráti
NULLpre ľavú tabuľku. - FULL JOIN (FULL OUTER JOIN): Vracia všetky riadky, ak je zhoda aspoň v jednej z tabuliek. Ak zhoda chýba, vráti
NULLpre chýbajúce polia. (Nie je podporované všetkými SGBD, napríklad MySQL používa UNION na emuláciu). - CROSS JOIN: Vracia kartézsky súčin riadkov oboch tabuliek (každý riadok prvej tabuľky sa kombinuje s každým riadkom druhej).
Príklady syntaxe:
-- INNER JOIN
SELECT *
FROM table1
INNER JOIN table2 ON table1.id = table2.foreign_id;
-- LEFT JOIN
SELECT customer.name, order.order_id
FROM customer
LEFT JOIN order ON customer.id = order.customer_id;
Kľúčové slová pre dotazy:
SELECT: Určuje stĺpce na extrahovanie.FROM: Uvádza tabuľku(y).WHERE: Filtruje riadky podľa zadaných podmienok.GROUP BY: Zoskupuje riadky s rovnakými hodnotami do jednej zhrnujúcej riadky.HAVING: Filtruje skupiny poGROUP BY.ORDER BY: Zoradí výsledok.LIMIT / OFFSET: Obmedzuje počet vrátených riadkov.
Optimalizácia dotazov a spojení je dôležitá pre výkon databázy. Používajú sa indexy, správne definície typov údajov, vyhýbanie sa SELECT * (ak je to možné), optimalizácia podmienok v WHERE.
V PHP sa na prácu s dotazmi a spojeniami používajú rozšírenia ako PDO alebo MySQLi, ktoré poskytujú API na vykonávanie SQL dotazov.