Příkazy jazyka SQL

(přesměrováno z SQL příkaz)

Příkazy jazyka SQL obecně umožňují úplnou kontrolu nad systémem řízení báze dat. Podle svého účelu se dělí do následujících skupin:

Příkazy pro manipulaci s daty editovat

Na tuto kapitolu je přesměrováno heslo Data Manipulation Language.

Jsou to příkazy pro získání dat z databáze a pro jejich úpravy. Označují se zkráceně DMLData Manipulation Language („jazyk pro manipulaci s daty“).

  • SELECT – vybírá data z databáze, umožňuje výběr podmnožiny a řazení dat.
  • INSERT – vkládá do databáze nová data.
  • UPDATE – mění data v databázi (editace).
  • MERGE – kombinace INSERT a UPDATE – data buď vloží (pokud neexistuje odpovídající klíč), pokud existuje, pak je upraví ve stylu UPDATE.
  • DELETE – odstraňuje data (záznamy) z databáze.
  • EXPLAIN – speciální příkaz, který zobrazuje postup zpracování SQL příkazu. Pomáhá uživateli optimalizovat příkazy tak, aby byly rychlejší.
  • SHOW - méně častý příkaz, umožňující zobrazit databáze, tabulky nebo jejich definice

Příkazy pro definici dat editovat

Na tuto kapitolu je přesměrováno heslo Data Definition Language.

Těmito příkazy se vytvářejí struktury databáze – tabulky, indexy, pohledy a další objekty. Vytvořené struktury lze také upravovat, doplňovat a mazat. Tato skupina příkazů se nazývá zkráceně DDLData Definition Language („jazyk pro definici dat“).

  • CREATE – vytváření nových objektů.
  • ALTER – změny existujících objektů.
  • DROP – odstraňování objektů.

Příkazy pro řízení dat editovat

Na tuto kapitolu jsou přesměrována hesla Data Control Language a Transaction Control Commands.

Do této skupiny patří příkazy pro nastavování přístupových práv a řízení transakcí. Označují se jako DCLData Control Language („jazyk pro ovládání dat“), někdy také TCCTransaction Control Commands („jazyk pro ovládání transakcí“).

  • GRANT – příkaz pro přidělení oprávnění uživateli k určitým objektům.
  • REVOKE – příkaz pro odnětí práv uživateli.
  • START TRANSACTION – zahájení transakce.
  • COMMIT – potvrzení transakce.
  • ROLLBACK – zrušení transakce, návrat do původního stavu.

Ostatní příkazy editovat

Do této skupiny patří příkazy pro správu databáze. Pomocí nich lze přidávat uživatele, nastavovat systémové parametry (kódování znaků, způsob řazení, formáty data a času apod.). Tato skupina není standardizována a konkrétní syntaxe příkazů je závislá na databázovém systému. V některých dialektech jazyka SQL jsou přidány i příkazy pro kontrolu běhu, takže lze tyto dialekty zařadit i mezi programovací jazyky.

Příklad pro MySQL
SET NAMES utf8; -- nastaví jako kódování UTF-8
SET foreign_key_checks=0; -- vypne kontrolu cizích klíčů
SET time_zone="SYSTEM"; -- nastaví časovou zónu
SET sql_mode="NO_AUTO_VALUE_ON_ZERO"; -- vypne automatické doplňování hodnoty primárního klíče s příznakem AUTO_INCREMENT

Dotazování dat editovat

Syntaxe jednoduchého SQL dotazu do tabulky a logické zpracování dat editovat

Pokud se chceme dotázat SQL skriptem do nějaké tabulky pro určitá data, tak kromě zmíněného DML příkazu SELECT využíváme tzv klauzule. Mezi tyto klauzule patří

  • WHERE - zadání podmínek a filtrů dat
  • GROUP BY - seskupování záznamů
  • HAVING - zadání podmínek nad agregační funkcí
  • ORDER BY - seřazení dat

Příkaz SELECT a tyto klauzule musejí být zadány v určitém pořadí. Je ale velký rozdíl mezi tím, jak se skript správně píše a mezí tím, jak je poté ve skutečnosti zpracováván.

Syntaxe SQL dotazu editovat

  1. SELECT [sloupec_1] AS Alias_1, [sloupec_2] AS Alias_2, SUM([sloupec_3]) AS [Soucet_sloupec_3]
  2. FROM [tabulka]
  3. WHERE [sloupec_1] like ('%text%')
  4. GROUP BY [sloupec_1], [sloupec_2]
  5. HAVING SUM([sloupec_3]) > [hodnota]
  6. ORDER BY [sloupec_1]

Logické zpracování dotazu[1] editovat

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

Výše uvedené si lze jednoduše otestovat tak, že bychom do WHERE klauzule napsali podmínku Alias_1 like ('%text%'). SQL engine by nám nebyl schopen vrátit výsledek a skript by skončil chybou. Důvodem je to, že v momentě kdy se zpracovává WHERE klauzule, tak ještě alias nezná (SELECT se zpracovává až za WHERE).

Komentáře editovat

Do kódu SQL lze ve všech hlavních databázích zapisovat i komentáře. Prakticky všechny z nich podporují jednořádkové komentáře, některé i víceřádkové. Jednořádkové bývají uvozeny znaky jako --, ## (či jenom #), s tím, že parser jazyka ignoruje vše až do konce řádku. Víceřádkové komentáře se mohou psát mezi /* a */, kdy případný kód za koncovým */ se zpracovává.

-- jednořádkový komentář. SELECT "tento příkaz se nevykoná";

/* více-
-řádkový
komentář */ SELECT "tento příkaz se vykoná.";

Např. MySQL využívá tento typ komentářů k vkládání kódu specifického pro tento typ databáze, s tím, že specifický kód je umístěn mezi /*! a */.

/*!40101 SET NAMES utf8 */;
CREATE /*!32302 TEMPORARY */ TABLE t (a INT);
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE table1.col1=5;

Je-li takovýto kód spuštěn v jiném databázovém prostředí, je vnitřek komentáře ignorován (můžeme hovořit o kompatibilitě s ostatními implementacemi SQL).

Reference editovat

  1. ZEDNÍČEK, Ing. BI Portál [online]. 2016-08-20 [cit. 2019-09-30]. Dostupné online.