====== SQL (Structured Query Language) ====== **SQL** je deklarativní jazyk, což znamená, že uživatel definuje **co** chce získat (např. "všechny zákazníky z Prahy"), nikoliv **jak** má počítač technicky data na disku vyhledat. Vznikl v 70. letech v laboratořích IBM a od té doby se stal celosvětovým standardem pro práci s daty. SQL se používá v relačních databázích (RDBMS), kde jsou data organizována do **tabulek** s řádky a sloupci, které jsou mezi sebou propojeny pomocí relací (vztahů). ---- ====== Čtyři základní operace (CRUD) ====== Většina práce v SQL se točí kolem čtyř základních akcí, pro které se v IT používá akronym **CRUD**: ^ Operace ^ SQL příkaz ^ Příklad ^ | **C**reate (Vytvořit) | ''INSERT'' | Vložení nového uživatele do databáze. | | **R**ead (Číst) | ''SELECT'' | Vyhledání informací o produktu podle ID. | | **U**pdate (Aktualizovat) | ''UPDATE'' | Změna adresy u existujícího zákazníka. | | **D**elete (Mazat) | ''DELETE'' | Odstranění starého záznamu z tabulky. | ---- ====== Struktura SQL dotazu ====== Typický dotaz pro výběr dat vypadá následovně: SELECT jmeno, email FROM uzivatele WHERE mesto = 'Praha' ORDER BY jmeno ASC; Tento příkaz říká: "Vyber sloupce jméno a e-mail z tabulky uživatelé, ale jen ty z Prahy, a seřaď je podle jména od A do Z." ---- ====== Kategorie SQL příkazů ====== Jazyk SQL se dělí do několika podskupin podle jejich účelu: * **DML (Data Manipulation Language):** Práce se samotnými daty (''SELECT'', ''INSERT'', ''UPDATE'', ''DELETE''). * **DDL (Data Definition Language):** Definice struktury (vytváření tabulek, změna sloupců – ''CREATE'', ''ALTER'', ''DROP''). * **DCL (Data Control Language):** Správa přístupových práv (''GRANT'', ''REVOKE''). ---- ====== Relační model a JOIN ====== Síla SQL spočívá v možnosti propojovat tabulky. Místo toho, aby byla všechna data v jedné obří tabulce, jsou rozdělena (např. tabulka ''Objednávky'' a tabulka ''Zákazníci''). Pomocí příkazu **JOIN** je lze spojit do jednoho výsledku. ---- ====== Nejpoužívanější SQL databáze ====== Přestože je SQL standardem, různí výrobci mají své vlastní implementace (dialekty), které se mírně liší: * **MySQL / MariaDB:** Nejpopulárnější open-source databáze, základ většiny webů (WordPress atd.). * **PostgreSQL:** Pokročilá open-source databáze s důrazem na standardy a komplexní funkce. * **Microsoft SQL Server:** Robustní řešení pro firemní prostředí v ekosystému Windows. * **SQLite:** Lehká databáze uložená v jediném souboru, používaná v mobilních aplikacích (Android, iOS). * **Oracle Database:** Špičkové a nákladné řešení pro kritické systémy velkých korporací a bank. ---- ====== SQL vs. NoSQL ====== V posledních letech se vedle SQL prosadily i **NoSQL** databáze (např. MongoDB). ^ Vlastnost ^ SQL (Relační) ^ NoSQL (Nereleleční) ^ | **Struktura** | Pevně dané schéma (tabulky). | Flexibilní schéma (dokumenty, grafy). | | **Škálování** | Vertikální (výkonnější server). | Horizontální (více levnějších serverů). | | **Vztahy** | Výborné pro komplexní relace. | Vhodné pro nestrukturovaná data. | | **[[cap_theorem|CAP]]** | Obvykle upřednostňuje Konzistenci. | Často upřednostňuje Dostupnost. | ---- //Související pojmy: Databáze, CRUD, JOIN, NoSQL, CAP teorém, MySQL, PostgreSQL, Indexování.//