Minule jsme se tu věnovali SQL příkazu Select, dnes se podíváme na čtveřici Insert, Update, Merge a Delete. Jak už jejich názvy napovídají, bude tu tedy řeč o vkládání, změnách a mazání dat v databázi.
Příkazy pro modifikaci dat je pochopitelně nutné používat s rozmyslem. Jeden špatně promyšlený SQL příkaz může napáchat nedozírné škody.Jak už jste se mohli dočíst v našich předchozích článcích o SQL, budeme vycházet ze syntaxe příkazů tak, jak jsou implementovány v oblíbeném databázovém systému MySQL; nicméně většina zde uvedených informací platí pro jazyk SQL obecně, nezávisle na implementaci.
A ještě ke způsobu zápisu syntaxe: Příkazy v hranatých závorkách jsou volitelné, použít je tedy lze, ale nejsou nezbytné.
Data do tabulky lze vložit příkazem INSERT. Jeho syntaxe vypadá takto: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tabulka [(nazev_sloupce,...)] {VALUES | VALUE} ({vyraz | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE sloupec=vyraz [, col_name=expr] ... ]. Jakkoli to na první pohled může vypadat komplikovaně, v praxi je použití velmi snadné. Příklad příkazu Insert může vypadat třeba takto: INSERT INTO zamestnanci VALUES (‘Jan Novak‘). I když, po pravdě, takový příkaz by předpokládal, že máte v tabulce pouze sloupec s kompletními jmény zaměstnanců, což není příliš pravděpodobné. Reálnější příklad by už tedy mohl být: INSERT INTO zamestnanci(jmeno, prijmeni, mzda) VALUES (‘Jan‘, ‘Novak‘, 50000).
Příkaz Update slouží ke změně (updatu) dat v tabulce a jeho použití může vypadat třeba takto: UPDATE tab1 SET mzda = 55000 WHERE jmeno LIKE 'Novak'. Zde tedy dojde ke změně sloupce mzda u člověka z tabulky tab1 se jmenem Novak na 55000. (Ne, že by zrovna takto definovaný příkaz Update byl tou nejlepší volbou, třeba kvůli duplicitě jmen, že ano). Kromě hodnot, na kterou se mají sloupce změnit (opět lze zadat více sloupců oddělených čárkou), lze zadat i výrazy.
Rovněž lze na konci příkazu použít modifikátory [ORDER BY ...] [LIMIT pocet]. LIMIT omezuje počet změněných řádků – a v tom okamžiku dává smysl o modifikátor ORDER BY, tedy seřaď podle.
Příkaz MERGE kombinuje příkazy INSERT a UPDATE. Data tedy buď vloží, pokud neexistuje odpovídající klíč, nebo změní, pokud existuje. U MySQL místo příkazu Merge můžete použít příkazu Insert s modifikátorem ON DUPLICATE KEY UPDATE, který můžete vidět v obecném zápisu syntaxe příkazu Insert výše.
A konečně příkaz Delete maže záznamy v tabulce. Způsob použití je velmi podobný příkazu Update, jen pochopitelně není třeba definovat, jaký sloupec se má jak změnit. Příkladem tedy může být tedy třeba příkaz DELETE FROM tab1 WHERE id=5, kdy dojde ke smazání řádku (nebo řádků) s id=5 z tabulky tab1. Opět lze použít modifikátory [ORDER BY ...] [LIMIT pocet], kde LIMIT omezuje počet smazaných řádků – a spolu s ním tedy opět dává smysl i modifikátor ORDER BY, tedy seřaď podle.
Výše je tedy uvedeno základní použití SQL příkazů Insert, Update, Merge a Delete, nicméně opět možností a způsobů využití je výrazně více, jak je ostatně vidět například z výše nastíněné syntaxe příkazu Insert. Věříme však, že pro základní představu uvedené příklady postačí.
Jazyk SQL (z anglického Structured Query Language) asi není třeba dlouze představovat: Řada uživatelů počítačů jej zná z desktopových databází...