|
![]() | Kompatibilita s normami SQL a staršími verzemi 602SQL | ![]() | Jazyk SQL a jeho implementace | Způsoby použití SQL ve 602SQL | ![]() |
Pro zápis syntaxe SQL se používá upravená BNF (Backus Naur Form). Syntaxe je popsána soustavou pravidel ve tvaru:
neterminál ::= popis_syntaxe_neterminálu
Pravá strana pravidla říká, jakou syntaxi může mít neterminál uvedený na jeho levé straně. Obsahuje symboly, které budou zapsány přímo v SQL (terminální symboly) a neterminály, které jsou definovány jinými pravidly. Na pravé straně se také mohou vyskytovat tyto metasymboly, tedy symboly, které nejsou součástí syntaxe, ale umožňují zápis syntaxe. Metasymboly jsou:
| |
oddělovač variant - lze použít jednu nebo druhou variantu |
[ ] |
závorky vymezující nepovinnou část |
{ } |
metazávorky (ohraničují určitou část pravidla) |
… |
symbol označující nula nebo více opakování bezprostředně předcházejícího symbolu (nebo více symbolů v metazávorkách) |
Příklad použití zápisu:
příkaz_INSERT ::= INSERT INTO jméno_tabulky [ ( jméno_sloupce {,jméno_sloupce}… ) ] obsah
obsah ::= VALUES ( hodnota {, hodnota }… ) | DEFAULT VALUES | dotazový_výraz
Příkaz INSERT je definován takto: začíná povinnými vyhrazenými slovy INSERT INTO následovanými neterminálem jméno_tabulky. Obsah neterminálu jméno_tabulky je v tomto případě zřejmý.
Dále následují metasymboly - hranaté závorky - vymezující nepovinnou část. V ní jsou kulaté závorky - ty nepatří mezi metasymboly, jsou tedy součástí příkazu. Obsahují jeden nebo více neterminálů jméno_sloupce. Složené závorky zde vymezují část, ke které se vztahuje symbol pro opakování.
Následuje neterminál obsah, jehož syntaxe je definovaná v následujícím pravidle. Pomocí oddělovačů variant jsou naznačeny tři různé, navzájem se vylučující možnosti syntaxe. První varianta začíná vyhrazeným slovem VALUES a pokračuje výčtem jedné nebo více hodnot v kulatých závorkách. Druhá varianta se skládá pouze ze slov DEFAULT VALUES. Třetí varianta odkazuje na neterminál dotazový výraz. Dotazový výraz je pojmem, na který je odkazováno z mnoha míst, proto je definován na zvláštní stránce.
Příkladem příkazu INSERT vyhovujícímu těmto pravidlům, je:INSERT INTO Inventory(name, id, price) VALUES ('Empo', 546000, 489.20)
V příkladech dodržujeme tuto konvenci: zapisujeme jména tabulek s prvním písmenem velkým, jména sloupců malými písmeny, vyhrazená slova SQL velkými písmeny.
![]() | Kompatibilita s normami SQL a staršími verzemi 602SQL | ![]() | Jazyk SQL a jeho implementace | Způsoby použití SQL ve 602SQL | ![]() |