Číst data už umíme. Teď to zajímavější: jak data přidat, změnit a smazat. Slouží k tomu tři příkazy – INSERT, UPDATE a DELETE – a u dvou z nich si dáme obzvlášť pozor, protože dokážou napáchat škodu.
INSERT – přidání nového záznamu
Nový řádek vložíte tak, že řeknete, do kterých sloupců a jaké hodnoty:
INSERT INTO produkty (nazev, cena, skladem)
VALUES ('Monitor', 2990, 5);
Pořadí hodnot musí odpovídat pořadí sloupců. Sloupec id nevyplňujeme – databáze ho přidělí sama (díky AUTO_INCREMENT z druhého dílu). Text je zase v apostrofech, čísla bez nich.
VALUES ('Monitor', 2990, 5), ('Webkamera', 890, 8);UPDATE – změna existujícího záznamu
UPDATE upraví hodnoty ve sloupcích. Zásadní je část WHERE, která řekne, který řádek se má změnit:
UPDATE produkty SET cena = 690 WHERE id = 2;
Tenhle dotaz sníží cenu u produktu s id 2. Změnit můžete i víc sloupců naráz, oddělíte je čárkou:
UPDATE produkty SET cena = 690, skladem = 30 WHERE id = 2;
UPDATE (nebo DELETE) zapomenete WHERE, příkaz se provede na všech řádcích. UPDATE produkty SET cena = 690; přepíše cenu úplně všem produktům. Vrátit to zpět většinou nejde.DELETE – smazání záznamu
Mazání funguje stejně – a stejně nebezpečně. Zase rozhoduje WHERE:
DELETE FROM produkty WHERE id = 2;
Smaže jediný řádek, produkt číslo 2. Ale pozor:
DELETE FROM produkty; -- SMAŽE ÚPLNĚ VŠECHNO
Tenhle dotaz bez WHERE vyprázdní celou tabulku. Proto k mazání přistupujte s rozmyslem.
Zlaté pravidlo: nejdřív SELECT
Než pustíte UPDATE nebo DELETE, nahraďte je nejdřív SELECTem se stejným WHERE a podívejte se, které řádky to vrátí:
SELECT * FROM produkty WHERE id = 2;
Když dotaz vrátí přesně to, co chcete změnit nebo smazat, teprve pak SELECT přepište na UPDATE / DELETE. Ušetří vám to spoustu nervů.
Časté chyby
- Zapomenuté WHERE. Viz výše – nejdůležitější věc celého dílu. U
UPDATEaDELETEho mějte vždy, pokud opravdu nechcete zasáhnout všechny řádky. - Špatný počet hodnot u INSERT. Počet hodnot v
VALUESmusí sedět s počtem vyjmenovaných sloupců. - Text bez apostrofů. Stejně jako u
SELECT: text do'...', čísla bez nich.
Nechcete web řešit sami a chcete ho mít hotový a profesionální?
Podívejte se na tvorbu webů →© Ondřej Šteigl. Autorem návodů jsem já. Obsah je autorským dílem chráněným podle zákona č. 121/2000 Sb. (autorský zákon). Kopírování, přebírání nebo šíření bez mého předchozího písemného souhlasu je zakázáno. Výukové použití je vítáno – stačí uvést zdroj (osteigl.cz).