Co je SQL? Jazyk databází jednoduše vysvětlený
SQL (Structured Query Language, říká se „ES-KU-EL“ nebo „sequel“) je standardní jazyk pro práci s relačními databázemi, tedy s těmi, které ukládají data do tabulek s řádky a sloupci, například Postgres, MySQL, SQLite a SQL Server. SQL používáte, když se na data ptáte („kteří zákazníci si tento měsíc rezervovali?“) a když přidáváte, měníte nebo odstraňujete záznamy. Existuje od 70. let, je mezinárodním standardem a pohání velkou část aplikací na světě.
Proč na SQL záleží, když stavíte s AI
Když po nástroji na tvorbu aplikací s AI chcete „ukládat objednávky“ nebo „ukázat seznam nadcházejících rezervací“, musí s databází něco komunikovat. A ve většině aplikací je to SQL, buď napsané přímo, nebo vygenerované přes ORM.
SQL psát nemusíte, ale trochu porozumění se vyplatí:
- Můžete kontrolovat svá data. Krátký dotaz odpoví na „kolik registrací jsme tento týden získali?“ rychleji, než když postavíte novou obrazovku.
- Můžete si objednat lepší přehledy. „Seskup tržby podle měsíce a služby“ je pojem ze SQL. Když ho znáte, je váš požadavek jasnější.
- Můžete odhalit nebezpečné změny.
DELETEneboUPDATEbez klauzuleWHEREovlivní každý řádek. To stojí za to zachytit, než se spustí. - Vaše data nejsou uzamčená. SQL je sdílený standard, takže data v SQL databázi mohou číst a přesouvat mnohé nástroje.
Každodenní přirovnání
Představte si velmi dobře uspořádanou knihovnu s knihovnicí, která mluví jen přesným a jednoduchým jazykem.
Regály neprocházíte sami. Knihovnici předáte lístek: „Najdi všechny knihy tohoto autora, vydané po roce 2010, nejnovější jako první.“ Knihovnice budovu zná zevnitř a vrátí přesně tyto knihy ve správném pořadí.
SQL je jazyk na tom lístku. Říkáte, co chcete, ne jak to najít. Databáze si sama určí nejrychlejší cestu.
Jak SQL funguje: tabulky, řádky a sloupce
Relační databáze drží data v tabulkách. Každá tabulka obsahuje jeden druh věcí, každý řádek je jeden záznam a každý sloupec je jeden údaj:
customers
| id | name | city | |
|---|---|---|---|
| 1 | Lena Ortiz | lena@example.com | Lisbon |
| 2 | Sam Patel | sam@example.com | Leeds |
orders
| id | customer_id | total | placed_at |
|---|---|---|---|
| 101 | 1 | 42.00 | 2026-09-20 |
| 102 | 2 | 18.50 | 2026-09-22 |
| 103 | 1 | 25.00 | 2026-09-27 |
Sloupec customer_id propojuje každou objednávku se zákazníkem. Právě toto propojení dělá databázi „relační“.
Praktický příklad: odpovídání na skutečné otázky
1. Čtení dat — „ukaž mi všechny zákazníky z Lisabonu“:
SELECT name, email
FROM customers
WHERE city = 'Lisbon';
2. Řazení a omezení — „pět nejnovějších objednávek“:
SELECT id, total, placed_at
FROM orders
ORDER BY placed_at DESC
LIMIT 5;
3. Spojení tabulek — „každá objednávka se jménem zákazníka“:
SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c ON c.id = o.customer_id;
4. Souhrn — „celkem utraceno na zákazníka“:
SELECT c.name, SUM(o.total) AS total_spent
FROM customers c
JOIN orders o ON o.customer_id = c.id
GROUP BY c.name
ORDER BY total_spent DESC;
S ukázkovými daty to vrátí Lenu Ortiz s 67,00 a Sama Patela s 18,50.
5. Změna dat:
INSERT INTO customers (name, email, city)
VALUES ('Ana Silva', 'ana@example.com', 'Porto');
UPDATE customers SET city = 'Porto' WHERE id = 1;
DELETE FROM orders WHERE id = 102;
To odpovídá čtyřem základním akcím téměř každé aplikace: vytvořit, číst, upravit a smazat, známým jako CRUD.
Jedno varování: UPDATE customers SET city = 'Porto'; bez klauzule WHERE změní každého zákazníka. Vždy zkontrolujte WHERE, než změnu spustíte.
Hlavní části SQL
| Příkaz | Co dělá |
|---|---|
SELECT | Čte data |
INSERT | Přidává nové řádky |
UPDATE | Mění existující řádky |
DELETE | Odstraňuje řádky |
CREATE TABLE / ALTER TABLE | Vytvoří nebo změní strukturu tabulky |
WHERE | Filtruje, které řádky jsou ovlivněny |
JOIN | Spojuje související tabulky |
GROUP BY | Shrnuje řádky do skupin pomocí COUNT, SUM, AVG |
ORDER BY / LIMIT | Řadí výsledky a omezuje jejich počet |
SQL je standardizované, ale každá databáze přidává vlastní rozšíření, kterému se říká dialekt. Postgres, MySQL i SQLite rozumí výše uvedeným příkladům, ale detaily, jako jsou funkce pro datum, se mírně liší.
Klíčové pojmy
| Pojem | Význam |
|---|---|
| Dotaz (query) | Příkaz SQL, zejména ten, který čte data. |
| Tabulka / řádek / sloupec | Druh věci / jeden záznam / jeden atribut. |
| Primární klíč | Sloupec, který jednoznačně identifikuje každý řádek, obvykle id. |
| Cizí klíč | Sloupec ukazující na řádek v jiné tabulce, například customer_id. |
| Index | Vyhledávací struktura, která hledání ve sloupci výrazně zrychlí. |
| Schéma | Struktura všech tabulek a sloupců. |
| Transakce | Skupina změn, které buď všechny uspějí, nebo všechny selžou. |
| SQL injection | Útok, při kterém se uživatelský vstup propašuje do dotazu. Předchází mu parametrizované dotazy. |
Časté mylné představy
- „SQL je databáze.“ SQL je jazyk; Postgres, MySQL a SQLite jsou databáze, které ním mluví.
- „SQL je staré, takže je zastaralé.“ Je vyspělé, ne zastaralé. Moderní databáze a datové nástroje ho pořád používají a nové často přidávají podporu SQL.
- „SQL používají jen vývojáři.“ Analytici, marketéři a zakladatelé používají jednoduché dotazy každý den.
- „SQL nezvládne pružná data.“ Mnoho SQL databází ukládá také JSON. Postgres má například typ
jsonb. Viz SQL vs NoSQL. - „Nechat AI spouštět libovolné SQL na produkci je v pořádku.“ Čtení je málo riskantní; změny a mazání na živých datech si zaslouží zálohu a druhý pohled. Viz jak zálohovat databázi své aplikace.
Na co se ptát svého AI nástroje
- „Ukaž mi tabulky v mé databázi a co znamená každý sloupec.“
- „Napiš dotaz jen pro čtení: kolik nových registrací bylo za každý den za posledních 30 dní?“
- „Před spuštěním jakéhokoli UPDATE nebo DELETE mi ukaž dotaz a kolik řádků ovlivní.“
- „Přidej indexy na sloupce, podle kterých nejčastěji filtrujeme a řadíme.“
- „Zajisti, aby každý dotaz, který používá uživatelský vstup, byl parametrizovaný.“
- „Obal aktualizace objednávek a plateb do transakce, aby se nemohly zdařit jen napůl.“
SQL v Mythexu
Když vaše aplikace potřebuje ukládat data, Mythex do projektu přidá vyhrazenou Postgres databázi. Požádejte o ni v chatu, například „ulož e-maily z čekací listiny do databáze“, nebo použijte příkaz /database (Databáze). Agent vytvoří tabulky a napíše dotazy a v režimu Ask ho můžete požádat, aby jakýkoli dotaz srozumitelně vysvětlil. Více o samotné databázi najdete v článku co je Postgres.
Otázky
Co je SQL jednoduše řečeno?
SQL (Structured Query Language) je standardní jazyk pro práci s relačními databázemi. Používá se k tomu, abyste se na data ptali, například „které objednávky přišly tento týden“, a abyste přidávali, měnili nebo mazali záznamy.
Jak se SQL vyslovuje?
Obě výslovnosti, „es-kú-el“ (vyslovení jednotlivých písmen) i „sequel“, jsou běžné a správné. Jazyk se původně jmenoval SEQUEL, odtud pochází druhá výslovnost.
Je SQL programovací jazyk?
SQL je dotazovací jazyk navržený pro správu dat. Popíšete, jaký výsledek chcete, a databáze si sama zjistí, jak ho získat. Samo o sobě se jím nestavějí celé aplikace, ale je součástí téměř každé aplikace, která používá relační databázi.
Je SQL těžké naučit se?
Základy jsou přístupné: SELECT, WHERE, ORDER BY, INSERT, UPDATE a DELETE pokrývají většinu běžných potřeb a čtou se téměř jako angličtina. Spojení tabulek, seskupování a ladění výkonu zvládnete déle.
Potřebuji znát SQL, abych s AI postavil aplikaci?
Ne. Nástroj s AI napíše SQL nebo kód databáze za vás. Trochu znalostí se ale hodí, když chcete zkontrolovat svá data, požádat o přehledy nebo odhalit rizikové změny dřív, než nastanou.