Neprocedurální standardizovaný jazyk SQL (Structured Query Language, česky strukturovaný dotazovací jazyk) je určen pro práci s daty v relačních databázích. Jeho vznik se datuje do roku 1974, kdy světlo světa spatřil jazyk Sequel (Structured English Query Language, česky Anglický strukturovaný dotazovací jazyk), který byl použit v Systému R společnosti IBM.
Samotnému vývoji a nasazení jazyka Sequel, později SQL, předcházel článek „A Relational Model of Data for Large Shared Data Banks“ anglického vědce Edgara F. Codda. Článek byl otisknut v létě roku 1970 v magazínu Association for Computing Machinery (ACM) a jeho předmětem byl popis a návrh datového relačního modelu. Codd v článku nastínil způsob, jak využít relační kalkul a algebru při manipulaci s daty.
Návrh byl koncipován tak, aby ho byli schopni využívat i méně technicky zdatní uživatelé. Prostředkem k tomuto cíli bylo použití srozumitelných příkazů, které vycházely z běžné angličtiny. Návrh jazyka byl jakkoliv nezávislý na použitém hardwaru a na způsobu fyzického uložení dat. Koncept předpokládal ukládání do tabulek a přístup k datům prostřednictvím neprocedurálního jazyka.
Vývoj System-R prošel dvěma fázemi. V první fázi v období let 1974-1975 se prakticky ověřoval návrh relačního modelu. V druhé fázi, období let 1978-1979, se pak implementoval plně funkční víceuživatelský systém. Původním jazykem byl SEQUEL. Ke konci roku 1976 pak byla v IBM Journal of R&D popsána verze SEQUEL2. Ta byla později přejmenována na SQL. Důvodem k přejmenování bylo to, že název SEQUEL byl již zaregistrován jako obchodní značka letecké společnosti Hawker-Siddeley.
V roce 1986 byl jazyk SQL prohlášen standardem ANSI (SQL 86) a o rok později schválen standardem ISO (SQL 87). V roce 1989 byl publikován ISO dodatek Integrity Enhancement Feature (SQL89). V roce 1992 byla provedena úprava tohoto standardu a hovoří se o SQL2, nebo SQL92. V roce 1999 bylo SQL rozšířeno o regulární výrazy, rekurzivní dotazy, triggery, neskalární typy a některé objektové vlastnosti. V souvislosti s tímto rozšířením mluvíme o SQL3 nebo SQL1999. V roce 2003 byla představena XML rozšíření, standardizovány sekvence a sloupce s automaticky generovanými hodnotami. O této verzi hovoříme jako o SQL 2003.
Naučit se a používat jazyk SQL je velmi snadné. SQL příkazy můžeme rozdělit do čtyř hlavních skupin. První skupinu příkazů pro definici dat (DDL – Data Definition Language) využijeme při vytváření struktury databáze. Klíčová slova této skupiny jsou CREATE – pro vytváření nových objektů. DROP pro odstraňování objektů a ALTER pro změny existujících objektů.
Druhou skupinu tvoří příkazy pro manipulaci s daty (DML – Data Manipulation Language). Mezi hlavní příkazy této skupiny patří příkaz SELECT pro výběr konkrétních dat z databáze, INSERT pro vložení dat, UPDATE pro modifikaci záznamů a DELETE pro vymazání záznamu z databáze.
Do třetí skupiny se řadí příkazy pro řízení dat (TCC – Transaction Control Commands). Příkazy z této skupiny se například řídí transakce nebo se nastavují přístupová práva. Mezi příkazy z této skupiny patří BEGIN pro zahájení transakce, COMMIT pro potvrzení transakce a ROLLBACK pro zrušení transakce. Dále pak GRANT pro přidělení oprávnění uživateli k určitým objektům a REVOKE pro odebrání práv uživatele.
Čtvrtou skupinu pak tvoří příkazy pro správu databáze. Pomocí nich je možno přidat uživatele, nastavovat systémové parametry a další.
Zápis příkazů v SQL si ukážeme na dvou příkladech s tradičním Hello World. V prvním, obecně pojatém, se nejprve vytvoří tabulka s názvem message a atributem text. V druhém se do tabulky vloží řetězec „Hello, world!“. V třetím se na záznam v tabulce dotážeme, takže dojde k jeho vypsání na obrazovku. Ve čtvrtém příkazu tabulku i se záznamem smažeme. Druhý příklad ukazuje vypsání „Hello,world!“ v prostředí databáze Oracle. K vypsání je použito speciální konstrukce z FROM DUAL.
CREATE TABLE message (text char(15));
INSERT INTO message (text) VALUES ('Hello, world!');
SELECT text FROM message;
DROP TABLE message;
#Oracle
SELECT 'Hello, world!' FROM dual;
Poznámka pod čarou:
Základ jazyka SQL je postaven na relační teorii. Podle ní lze pomocí pěti základních operací, kterými jsou sjednocení, kartézský součin, rozdíl, projekce, selekce a spojení vykonat veškeré operace s daty. Další operace jsou pak již jen kombinace těchto zmíněných.
Odkazy:
A Relational Model of Data for Large Shared Data Banks
Článek vyšel původně v časopisu LinuxEXPRES. Autor článku Lukáš Faltýnek.
Článek je uveřejněn s GNU FDL licencí (anglicky).