SQL
| SQL (Structured Query Language) | |
|---|---|
| Typ | dotazovací a programovací jazyk |
| Vynálezce | Donald D. Chamberlin, Raymond F. Boyce (IBM) |
SQL (akronym z anglického Structured Query Language, česky strukturovaný dotazovací jazyk) je standardizovaný doménově specifický programovací jazyk určený pro komunikaci s relačními databázovými systémy (RDBMS). Jazyk primárně slouží k ukládání, manipulaci, vyhledávání a definování struktury dat. Výpočetní model SQL je deklarativní – programátor definuje, jaký výsledek chce získat, a samotný databázový stroj (optimalizátor dotazů) algoritmicky určuje nejefektivnější způsob, jak požadovaná data z fyzického úložiště extrahovat.
Od svého formálního zavedení v 70. letech 20. století se SQL stalo absolutním průmyslovým standardem v oblasti softwarového inženýrství a datové analytiky. Znalost syntaxe tohoto jazyka tvoří fundamentální základ pro administrátory databází, backendové vývojáře aplikací a datové inženýry. Z původně proprietárního nástroje společnosti IBM se jazyk vyvinul v mezinárodně uznávaný standard garantovaný institucemi ANSI a ISO, přičemž specifikace normy ISO/IEC 9075 definuje přesná pravidla pro implementaci jádra SQL v komerčních i open-source databázových strojích.
📝 Princip fungování a subjazyky SQL
Architektura jazyka se skládá z několika jasně vymezených podmnožin příkazů (subjazyků), které kategorizují operace do logických bloků podle jejich vlivu na databázi a přístupová práva.
Data Query Language (DQL)
DQL neboli jazyk pro dotazování nad daty obsahuje jediný primární příkaz `SELECT`. Slouží výlučně k extrakci dat z jedné nebo více tabulek, aniž by modifikoval jejich obsah. Dotazy mohou dosahovat značné komplexity prostřednictvím klauzulí:
- `FROM` – specifikuje zdrojové tabulky.
- `WHERE` – filtruje záznamy na základě stanovených podmínek a logických operátorů (`AND`, `OR`, `NOT`).
- `JOIN` – kombinuje sloupce z vícero tabulek na základě relačních vazeb (primárních a cizích klíčů). Varianty zahrnují `INNER JOIN`, `LEFT JOIN`, `RIGHT JOIN` a `FULL OUTER JOIN`.
- `GROUP BY` a `HAVING` – agregují data do skupin a filtrují samotné skupiny (často s využitím agregačních funkcí `COUNT()`, `SUM()`, `AVG()`).
- `ORDER BY` – určuje řazení výstupních záznamů.
Data Definition Language (DDL)
Tato sada příkazů definuje a modifikuje samotnou databázovou strukturu (schéma), nikoliv jednotlivé záznamy uvnitř. Patří sem definice tabulek, indexů, pohledů a omezení.
- `CREATE` – zakládá nové databázové objekty (např. `CREATE TABLE`, `CREATE INDEX`).
- `ALTER` – mění existující strukturu (např. přidání nového sloupce do existující tabulky).
- `DROP` – trvale odstraňuje databázový objekt i s jeho kompletním obsahem z disku.
- `TRUNCATE` – okamžitě vymaže všechny řádky z tabulky, ale zanechá její definovanou strukturu pro další použití.
Data Manipulation Language (DML)
DML operuje přímo nad fyzickými daty (řádky) uvnitř definovaných tabulek.
- `INSERT` – vkládá do tabulky nové záznamy.
- `UPDATE` – modifikuje hodnoty v existujících záznamech (obvykle v kombinaci s klauzulí `WHERE`, aby nedošlo k přepisu celé tabulky).
- `DELETE` – odstraňuje specifické řádky na základě podmínky.
Data Control Language (DCL) a Transaction Control Language (TCL)
DCL slouží k administraci uživatelských oprávnění a systémové bezpečnosti pomocí příkazů `GRANT` (udělení přístupu) a `REVOKE` (odebrání přístupu). TCL se stará o řízení transakcí. Databázová transakce je logická jednotka práce, která musí být provedena buď celá, nebo vůbec, čímž zajišťuje vlastnosti ACID (Atomicita, Konzistence, Izolace, Trvanlivost). Hlavními příkazy jsou `COMMIT` (permanentní uložení změn v transakci) a `ROLLBACK` (storno všech operací od začátku transakce v případě chyby).
🔬 Relační model a formy normalizace
Jazyk SQL byl navržen k obsluze relačního databázového modelu. V tomto modelu jsou data organizována do dvourozměrných tabulek skládajících se z řádků (záznamů či n-tic) a sloupců (atributů). Každý sloupec musí mít definovaný fixní datový typ (například celočíselný typ `INTEGER`, textový řetězec `VARCHAR`, či časový údaj `TIMESTAMP`).
Základním mechanismem relační databáze je propojování dat. To se provádí pomocí relačních klíčů:
- Primární klíč (Primary Key): Sloupec (nebo kombinace sloupců), který unikátně identifikuje každý řádek v tabulce. Hodnota primárního klíče nesmí obsahovat prázdnou hodnotu (NULL).
- Cizí klíč (Foreign Key): Atribut v jedné tabulce, který odkazuje na primární klíč tabulky jiné. Slouží k zajištění referenční integrity, což znamená, že databáze nedovolí smazat záznam v mateřské tabulce, pokud na něj odkazují data v tabulce dceřiné (ochrana proti vzniku tzv. sirotků).
Návrh relačních schémat podléhá procesu zvanému normalizace, jehož cílem je eliminace datové redundance (opakování stejných údajů) a prevence anomálií při úpravách. Běžně se využívají první tři normální formy (1NF, 2NF, 3NF), které postupně vyžadují atomicitu hodnot (v jedné buňce smí být jen jeden nedělitelný údaj), absenci částečných závislostí a úplné odstranění tranzitivních závislostí na primárním klíči.
⏳ Historie a vznik
Základy pro vznik SQL položil britský informatik Edgar F. Codd, výzkumník v laboratořích společnosti IBM v San Jose (dnes Almaden Research Center). V červnu roku 1970 publikoval Codd v časopise Communications of the ACM přelomový vědecký článek s názvem "A Relational Model of Data for Large Shared Data Banks". Článek matematicky popsal ukládání dat bez nutnosti znát jejich fyzické umístění na disku, čímž se postavil tehdy dominantním hierarchickým a síťovým databázím.
Na základě Coddovy teorie zahájili v roce 1974 Donald D. Chamberlin a Raymond F. Boyce v rámci téže laboratoře IBM vývoj programovacího jazyka pro dotazování na tato data. Původně navrhli jazyk SQUARE (Specifying Queries in A Relational Environment), který však využíval složitou matematickou notaci indexů. Následně vyvinuli sémanticky čitelnější verzi pojmenovanou SEQUEL (Structured English Query Language). Jazyk byl primárně navržen k ovládání experimentálního databázového systému IBM s názvem System R. Název SEQUEL musel být později zkrácen na SQL, protože zkratka již byla zaregistrovanou ochrannou známkou britské letecké společnosti Hawker Siddeley Dynamics Engineering.
Ačkoliv SQL vzniklo v laboratořích IBM, prvním komerčně dostupným systémem nebyl produkt této společnosti. V roce 1979 vydala společnost Relational Software, Inc. (která se později přejmenovala na Oracle Corporation) první komerční implementaci SQL databáze. Teprve po úspěchu systému Oracle vydala IBM v roce 1981 vlastní systém SQL/DS a v roce 1983 legendární systém IBM Db2. Tímto krokem získalo SQL tržní dominanci na úkor tehdy konkurenčního jazyka QUEL z projektu Ingres.
🏛 Standardizace a dělení norem ISO
S rychlým nástupem konkurenčních platforem se v polovině 80. let objevila nutnost sjednocení syntaxe. V roce 1986 vydal americký institut ANSI první formální standard pod označením ANSI X3.135. V roce 1987 tento dokument adaptovala ISO jako normu ISO 9075, běžně označovanou jako SQL-86.
Standard ISO/IEC 9075 se stal extrémně rozsáhlým dokumentem, který je z inženýrských důvodů rozdělen na tematické části (Parts). Publikace normy znamená, že všechny části jsou formálně aktualizovány a neplatné části vyřazeny. Současná struktura standardu SQL:2023 obsahuje tyto aktivní specifikace:
- Part 1: Framework (SQL/Framework) – Základní koncepce a terminologie.
- Part 2: Foundation (SQL/Foundation) – Jádro jazyka (DQL, DML, DDL, operátory a základní typy).
- Part 3: Call-Level Interface (SQL/CLI) – Rozhraní pro spouštění příkazů z jiných programovacích jazyků.
- Part 4: Persistent Stored Modules (SQL/PSM) – Syntax pro psaní uložených procedur a triggerů přímo v databázi.
- Part 9: Management of External Data (SQL/MED) – Dotazování do dat, která neleží v dané databázi.
- Part 10: Object Language Bindings (SQL/OLB)
- Part 11: Information and Definition Schemas (SQL/Schemata) – Systémové tabulky a metadata.
- Part 13: SQL Routines and Types Using Java (SQL/JRT)
- Part 14: XML-Related Specifications (SQL/XML)
- Part 15: Multi-dimensional Arrays (SQL/MDA)
- Part 16: Property Graph Queries (SQL/PGQ) – Integrace dotazů pro grafové databáze do relačního standardu SQL.
V reálné praxi žádný dodavatel softwaru nerespektuje standard na sto procent. Každá platforma (Oracle, PostgreSQL, Microsoft SQL Server) poskytuje vlastní proprietární rozšíření jazyka (dialekty) pro specifické procedurální výpočty, jako jsou PL/SQL u Oracle nebo T-SQL (Transact-SQL) u společnosti Microsoft.
🗓 Současnost a umělá inteligence (2025–2026)
V letech 2025 a 2026 zažívá ekosystém SQL masivní transformaci spojenou se zakomponováním generativní umělé inteligence (AI) přímo do databázového jádra a optimalizace databázových schémat pro potřeby autonomních softwarových agentů (takzvaný Agentic Database Development).
V březnu 2026 spustil Microsoft rozsáhlé aktualizace pro systém Microsoft SQL Server 2025 a cloudový Azure SQL. Zásadní technologickou novinkou na úrovni syntaxe jazyka T-SQL se stala integrace nativních vektorových datových typů a spuštění funkce `AI_GENERATE_EMBEDDINGS`. Tyto funkce transformují SQL tabulky na takzvanou vektorovou databázi, umožňující ukládat vícevrstvé sémantické reprezentace textu a hledat mezi miliony záznamů shody na základě významu, nikoliv jen podle shody klíčových slov. Paralelně byla do T-SQL jazyka začleněna podpora pro hloubkové regulární výrazy (Regex) zpracovávající objekty LOB (Large Objects) až do velikosti 2 megabytů.
Změna se propisuje také do samotného psaní SQL kódu. V srpnu 2026 jsou trendem "sémantické pohledy" (Semantic Views). Místo složitých a stovky řádků dlouhých dotazů tvoří datoví architekti předpřipravené pohledy opatřené silnými metadaty prostřednictvím příkazu `COMMENT ON COLUMN`. Tato metadata neslouží lidem, ale strojovým agentům, kterým poskytují exaktní instrukce, jak data interpretovat. Pokud například databáze obsahuje sloupec s technickým názvem, příkaz `COMMENT` v moderních SQL enginech jako Snowflake vloží definici sloupce do kontextového okna velkého jazykového modelu.
Pro podzimní období roku 2026 oznámili vývojáři vydání majoritní verze analytického open-source databázového enginu DuckDB v2.0 s kódovým označením Cyanoptera. Tento systém masivně získal na popularitě v letech 2024–2025, protože dokáže s obrovskou rychlostí zpracovávat SQL dotazy lokálně z paměti i v cloudových datových jezerech, aniž by vyžadoval tradiční instalaci obřího serveru. Verze 2.0 zavádí masivně přepracovaný SQL parser (modul čtecí SQL dotazy), novou datovou strukturu formátu pro uložení, podporu spouštěčů (triggers) a datový typ VARIANT.
📈 Statistiky trhu a chronologie norem
Z hlediska tržního objemu představuje cloudový provoz relačních SQL databází pod obchodním modelem DBaaS (Database as a Service) masivní globální byznys. Podle zprávy společnosti Fortune Business Insights a analytických dat ze srpna 2026 činila reálná hodnota trhu se SQL cloud databázemi ve fiskálním roce 2025 částku 23,20 miliardy amerických dolarů. Predikce pro období do roku 2033 odhaduje nárůst objemu trhu na 71,46 miliardy dolarů (při průměrné roční míře růstu CAGR 15,10 %). Severní Amerika dominovala trhu v roce 2025 s celkovým podílem 36,14 % (respektive přes 45 % dle odlišné metodiky agregace soukromých cloudů).
Následující tabulka představuje kompletní časovou řadu všech doposud vydaných hlavních standardizací jazyka SQL podle konsorcií ANSI a ISO, dokumentující kontinuální technický vývoj od prvních definic do roku 2023. Žádná verze nebyla v tabulce záměrně vynechána.
| Formální název a označení edice | Rok publikace | Vydávající autorita | Klíčová charakteristika nebo hlavní technický přínos vydání |
|---|---|---|---|
| SQL-86 (ANSI X3.135:1986) | 1986 | ANSI, ISO | Úplně první normativní definice základních struktur a syntaxe. |
| SQL-89 (ANSI X3.135:1989) | 1989 | ANSI, ISO | Úprava specifikující primárně zajištění referenční integrity v databázích. |
| SQL-92 (ANSI X3.135:1992) | 1992 | ANSI, ISO | Masivní rozšíření jazyka; zavedení standardizovaných operací JOIN a nových typů dat. |
| SQL:1999 (ISO/IEC 9075:1999) | 1999 | ISO | Doplnění regulárních výrazů, rekurzivních dotazů a objektových databázových modelů. |
| SQL:2003 (ISO/IEC 9075:2003) | 2003 | ISO | Implementace funkcionalit pro zpracování XML datových souborů a okenních (window) analytických funkcí. |
| SQL:2006 (ISO/IEC 9075-14:2006) | 2006 | ISO | Přidání specifické 14. části definující integraci formátů XQuery a ukládání dokumentů. |
| SQL:2008 (ISO/IEC 9075:2008) | 2008 | ISO | Zavedení klauzule ORDER BY mimo hlavní kurzory a integrace triggerů využívajících příkazy INSTEAD OF. |
| SQL:2011 (ISO/IEC 9075:2011) | 2011 | ISO | Normativní podpora temporálních databází pro zpracování změn uchovávaných v čase. |
| SQL:2016 (ISO/IEC 9075:2016) | 2016 | ISO | Zavedení plné standardizované podpory pro ukládání a dotazování do datového formátu JSON, včetně formátování cest. |
| SQL:2019 (ISO/IEC 9075-15:2019) | 2019 | ISO | Přidání 15. části stanovující práci s vícerozměrnými datovými poli (Multi-dimensional Arrays). |
| SQL:2023 (ISO/IEC 9075:2023) | 2023 | ISO | Rozšíření JSON funkcionalit a zcela nová 16. část definující SQL dotazování do orientovaných databázových grafů. |
Globální žebříček DB-Engines patří k nejrespektovanějším metodikám měření popularity a průmyslového rozšíření databázových technologií (kalkulován na základě objemu online zmínek, počtu nabídek práce a technických diskusních vláken). Tabulka níže zachycuje přesný stav prvních třinácti globálně nejvyužívanějších platforem (kde drtivá většina využívá právě dialekty SQL) měřený k srpnu roku 2026.
| Aktuální pořadí (Srpen 2026) | Databázový systém a vendor | Primární databázový model | Změna skóre k předchozímu roku |
|---|---|---|---|
| 1. | Oracle (Oracle Corporation) | Relační | Pokles |
| 2. | MySQL (Oracle Corporation) | Relační | Pokles |
| 3. | Microsoft SQL Server (Microsoft) | Relační | Pokles |
| 4. | PostgreSQL (PostgreSQL Global Development) | Relační | Růst |
| 5. | MongoDB (MongoDB Inc.) | Dokumentový (NoSQL) | Pokles |
| 6. | Snowflake (Snowflake Inc.) | Relační | Růst |
| 7. | Databricks (Databricks) | Relační, multimodální | Růst |
| 8. | Redis (Redis Ltd.) | Klíč-hodnota (NoSQL) | Růst |
| 9. | IBM Db2 (IBM) | Relační | Pokles |
| 10. | Apache Cassandra (Apache Software Foundation) | Širokosloupcový (NoSQL) | Pokles |
| 11. | SQLite (D. Richard Hipp) | Relační | Pokles |
| 12. | Elasticsearch (Elastic NV) | Vyhledávač / Vektorový (NoSQL) | Pokles |
| 13. | MariaDB (MariaDB Foundation) | Relační | Pokles |
💡 Pro laiky
Relační databázi si můžete představit jako obrovský elektronický šanon plný dokonalých excelových tabulek, kde má každá tabulka jiný účel. Jedna tabulka obsahuje seznam zákazníků, druhá seznam objednávek a třetí seznam produktů na skladě. Všechny tyto tabulky jsou mezi sebou propojené – systém například ví, že "Zákazník 5" si koupil "Produkt 12".
Databázový systém ale nefunguje tak, že byste do něj ručně klikali myší. Komunikuje se s ním právě pomocí jazyka SQL. SQL je přísně strukturovaný dotazovací jazyk, v němž člověk nepíše zdlouhavý program krok za krokem, ale rovnou klade striktní "otázky" a vydává povely. Kdybyste chtěli najít všechny zákazníky z Prahy, kteří loni nakoupili za více než 10 000 korun, zadáte počítači SQL příkaz `SELECT jméno FROM zakaznici WHERE mesto = 'Praha' AND nakup > 10000;`.
Systém tomuto povelu porozumí, ve zlomku vteřiny prohledá obrovský šanon dat, spojí informace z několika tabulek, odfiltruje zbytek a zobrazí vám jen tabulku se jmény vyhovující vašim podmínkám. Tímto způsobem funguje pozadí téměř každého e-shopu, internetového bankovnictví nebo sociální sítě na světě. Jakýkoliv váš klik na webu se na pozadí převede do rychlého SQL příkazu, který se odešle na vzdálený server, databáze vytáhne data, odešle je zpět přes internet a ta se vám následně zobrazí na displeji.
Zdroje
- Informační technologie
- Databázové systémy
- Programovací jazyky
- Dotazovací jazyky
- Software vyvinutý společností IBM
- Vynálezy z roku 1974
- Standardy Mezinárodní organizace pro normalizaci
- Informační věda
- Koncepce softwarového inženýrství
- Architektura klient-server
- Relační databáze
- Zpracování dat
- Počítačová věda
- Webové technologie
- Americké vynálezy
- Vytvořeno Google Gemini