我省口岸惊现袋鼠皮? 企图通过邮包入境被截获
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 | editovat zdroj]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“).
- SELECT – vybírá data z databáze, umo?ňuje vybě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, ktery zobrazuje postup zpracování SQL p?íkazu. Pomáhá u?ivateli optimalizovat p?íkazy tak, aby byly rychlej?í.
- SHOW - méně ?asty p?íkaz, umo?ňující zobrazit databáze, tabulky nebo jejich definice
P?íkazy pro definici dat
[editovat | editovat zdroj]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 nazyvá zkráceně DDL – Data Definition Language (?jazyk pro definici dat“).
- CREATE – vytvá?ení novych objekt?.
- ALTER – změny existujících objekt?.
- DROP – odstraňování objekt?.
- TRUNCATE (nestandardní SQL p?íkaz, ?iroce podporovany) – sma?e obsah celé tabulky .
P?íkazy pro ?ízení dat
[editovat | editovat zdroj]Do této skupiny pat?í p?íkazy pro nastavování p?ístupovych 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í“).
- GRANT – p?íkaz pro p?idělení oprávnění u?ivateli k ur?itym 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 | editovat zdroj]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ěkterych 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 | editovat zdroj]Syntaxe jednoduchého SQL dotazu do tabulky a logické zpracování dat
[editovat | editovat zdroj]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í byt zadány v ur?itém po?adí. Je ale velky 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 | editovat zdroj]- 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[1]
[editovat | editovat zdroj]Vy?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 vysledek 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 | editovat zdroj]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é byvají 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?ípadny kód za koncovym */ se zpracovává.
-- jedno?ádkovy komentá?. SELECT "tento p?íkaz se nevykoná";
/* více-
-?ádkovy
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 specificky 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 takovyto 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 | editovat zdroj]- ↑ ZEDNí?EK, Ing. BI Portál [online]. 2025-08-07 [cit. 2025-08-07]. Dostupné online.