Příkazy jazyka SQL

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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

Jsou to příkazy pro získání dat z databáze a pro jejich úpravy. Označují se zkráceně DML - Data Manipulation Language („jazyk pro manipulaci s daty“). +more * 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

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. +more Tato skupina příkazů se nazývá zkráceně DDL - Data 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

Do této skupiny patří příkazy pro nastavování přístupových práv a řízení transakcí. Označují se jako DCL - Data Control Language („jazyk pro ovládání dat“), někdy také TCC - Transaction Control Commands („jazyk pro ovládání transakcí“). +more * 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

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. +more). 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

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

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 [url=https://biportal.cz/zakladni-sql-dotazy/]dotazu[/url]

# SELECT [sloupec_1] AS Alias_1, [sloupec_2] AS Alias_2, SUM([sloupec_3]) AS [Soucet_sloupec_3] # FROM [tabulka] # WHERE [sloupec_1] like ('%text%') # GROUP BY [sloupec_1], [sloupec_2] # HAVING SUM([sloupec_3]) > [hodnota] # ORDER BY [sloupec_1]

Logické zpracování dotazu

# FROM # WHERE # GROUP BY # HAVING # SELECT # 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. +more 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

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é. +more 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).

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top