Když jsem začínal stavět aplikace, databáze mi přišla jako černá skříňka, do které data nějak zmizí a snad se zase objeví. Realita je mnohem příjemnější: je to jenom tabulka s několika pravidly. V tomhle článku ti ukážu SQL základy, které ti pokryjí drtivou většinu běžné práce, a vysvětlím, kde se databáze vlastně hodí a kde naopak sáhneš po něčem jiném.
Co je databáze a proč ji potřebuješ
Představ si Excel. Máš sloupce (jméno, e-mail, datum registrace) a řádky (jednotliví uživatelé). Databáze je v podstatě to samé, jen postavená tak, aby zvládla miliony řádků, hlídala si pravidla a uměla data hledat za zlomek vteřiny. K tomu přidává jistotu, že se ti data jen tak neztratí a že je v nich pořádek.
Vibe coder narazí na databázi ve chvíli, kdy aplikace potřebuje něco pamatovat mezi návštěvami. Registrace uživatelů, objednávky v e-shopu, příspěvky na blogu, kontaktní formuláře. Všechno, co má přežít zavření prohlížeče, žije v databázi. Bez ní by aplikace byla jako bloček, který po zavření zapomene, co sis poznamenal.
Hezké je, že databázi nemusíš stavět od nuly. Hotové řešení jako Supabase ti dá Postgres databázi během pár kliknutí a ty se rovnou věnuješ tomu, co data dělají, ne tomu, jak rozjet server.
SQL je jen způsob, jak se databáze ptát
SQL (Structured Query Language) je jazyk, kterým databázi říkáš, co chceš. Nemusíš se ho bát, čte se skoro jako angličtina. Klíčové slovo SELECT znamená vyber, INSERT znamená vlož, a tak dál. Tady jsou čtyři příkazy, které tvoří kostru úplně všeho, co s daty děláš.
SELECT: čti data
Nejčastější příkaz vůbec. Říká vyber mi tohle z téhle tabulky. Můžeš si vyžádat všechny sloupce, nebo jen ty, které potřebuješ, což je lepší zvyk.
-- vyber jméno a e-mail všech uživatelů
SELECT name, email FROM users;
-- jen uživatelé registrovaní letos
SELECT name, email FROM users
WHERE created_at >= '2026-01-01';INSERT: ulož nová data
Když se zaregistruje nový uživatel nebo přijde objednávka, vznikne nový řádek právě přes INSERT.
INSERT INTO users (name, email)
VALUES ('Petr Bláha', 'petr@example.cz');UPDATE: změň existující data
Tady pozor. UPDATE bez podmínky WHERE změní úplně všechny řádky v tabulce. To je nejčastější nehoda začátečníků, vždycky si tu podmínku zkontroluj.
-- POZOR: bez WHERE změníš VŠECHNY řádky
UPDATE users
SET name = 'Petr B.'
WHERE email = 'petr@example.cz';DELETE: smaž data
-- stejné varování jako u UPDATE, vždy WHERE
DELETE FROM users
WHERE email = 'petr@example.cz';Tyhle čtyři příkazy mají i hezkou zkratku: CRUD (create, read, update, delete). Když je pochopíš, máš v ruce 90 % každodenní práce s daty. Zbytek jsou jen variace a zpřesnění nad tímhle základem.
Filtrování a řazení, co budeš dělat pořád
Surová data jsou k ničemu, dokud z nich neumíš vytáhnout to, co potřebuješ. K tomu slouží pár klíčových slov, která budeš sázet skoro do každého dotazu. Tahle čtveřice je tak častá, že ji budeš znát nazpaměť dřív, než se naděješ.
- WHERE filtruje řádky podle podmínky (jen aktivní uživatelé, jen objednávky nad 1 000 Kč).
- ORDER BY seřadí výsledky (od nejnovějšího, podle abecedy).
- LIMIT omezí počet vrácených řádků (vrať mi jen prvních 10).
- COUNT spočítá, kolik řádků odpovídá (kolik mám uživatelů?).
-- 5 nejnovějších objednávek nad 1000 Kč
SELECT id, total, created_at FROM orders
WHERE total > 1000
ORDER BY created_at DESC
LIMIT 5;Všimni si, jak se to skládá jako stavebnice. Nejdřív řekneš odkud (FROM orders), pak co odfiltrovat (WHERE), jak seřadit (ORDER BY) a kolik vrátit (LIMIT). Pokaždé stejná logika.
Tabulky spolu mluví: vztahy
Skutečná síla databáze je v propojení tabulek. Uživatel má objednávky, objednávka má položky. Místo abys do každé objednávky kopíroval celé jméno a adresu zákazníka, uložíš jen jeho ID a tabulky pak spojíš. Údaj tak žije na jednom místě a změníš ho jen tam.
-- vypiš objednávky i se jménem zákazníka
SELECT orders.id, orders.total, users.name
FROM orders
JOIN users ON users.id = orders.user_id;Tohle spojení (JOIN) je často místo, kde začátečníci zakopnou výkonnostně, hlavně když ho volají ve smyčce místo jednou. Pokud ti vztahy zní jako španělská vesnice, mrkni na článek o tom, jak navrhnout databázové schéma, kde je rozebírám detailněji i s ukázkami.
Kde se databáze hodí (a kde ne)
Databázi nasadíš všude, kde data musí přežít a být dohledatelná. Není to ale řešení na úplně všechno a je dobré vědět, kde sáhnout jinam.
- Hodí se: uživatelské účty, objednávky, obsah webu, logy, cokoli, co se filtruje a hledá.
- Nehodí se: velké soubory (obrázky, videa). Ty patří do úložiště typu S3 nebo Supabase Storage, do databáze ukládáš jen odkaz na ně.
- Zvaž jinak: dočasná data, která nemusí přežít restart. Na to stačí cache v paměti, třeba Redis.
- Pozor: hesla nikdy neukládej v čitelné podobě, vždy jen jejich bezpečný otisk (hash).
Jak začít prakticky
Teorie je fajn, ale SQL se naučíš jen tím, že ho píšeš. Nejrychlejší cesta je rozjet si Supabase, který ti dá Postgres databázi zdarma a vizuální editor, kde si dotazy zkoušíš naživo. Založ si testovací tabulku, naházej do ní pár řádků a zkus si na ní všechny čtyři CRUD příkazy. Za hodinu budeš mít základ v malíku.
Pokud teprve hledáš, čím začít celkově, doporučuju nejdřív projít jak začít s vibe codingem, ať máš celkový obrázek. A až budeš vybírat konkrétní databázi, pomůže ti srovnání Postgres, SQLite, nebo Supabase, kde rozebírám, co se kdy vyplatí.
Časté dotazy
Musím umět SQL, když mi kód píše AI?
Aspoň základy ano. AI ti dotaz napíše, ale ty musíš poznat, jestli dává smysl, a hlavně jestli omylem nemaže celou tabulku. Pochopení SELECT, WHERE a JOIN ti ušetří hodiny ladění a pár nepříjemných nehod s daty.
Je SQL těžké?
Základy zvládneš za odpoledne. SQL je navržené tak, aby se četlo skoro jako věta. Náročnější je až návrh dobrého schématu a optimalizace výkonu, k tomu se dostaneš až později a postupně.
Jaký je rozdíl mezi databází a tabulkou?
Databáze je celý systém, který obsahuje mnoho tabulek. Tabulka je jedna konkrétní struktura, třeba users nebo orders. Jedna databáze tvé aplikace běžně drží desítky tabulek, které spolu přes vztahy souvisí.
Pokud si chceš nechat databázovou vrstvu navrhnout pořádně od začátku, ať tě za půl roku netrápí, rád ti s tím pomůžu. Stavím aplikace na míru a školím týmy, jak na to. Ozvi se mi přes kontakt a probereme to.