Začínáme s MySQL – vkládání úprava a výmaz dat

V dnešním díle vám ukáži, jakým způsobem se v MySQL manipuluje s daty. Využijete při tom příkazů INSERT, UPDATE a DELETE.
Dnešním dílem si nekladu za cíl vyložit vám kompletní výčet všech možností těchto příkazů, ale spíš ukázat zevrubný přehled nejčastějších způsobů použití.
Přidání záznamu

Nyní jste nejspíš ve stavu, že máte v MySQL vytvořenou tabulku (či více tabulek), ale tato tabulka je zatím prázdná. K přidání nových záznamů slouží v MySQL příkaz SQL jazyka INSERT. Syntaxe tohoto příkazu vypadá následovně:

INSERT [ LOW_PRIORITY | DELAYED ] [IGNORE] [INTO] název_tabulky [(název_pole, ...)] VALUES (hodnoty, ...);

Takto vypadá obecně zadaný příkaz INSERT. Jednoduchý příklad z praxe může vypadat třeba následovně: INSERT INTO prihlaseni_uzivatele (uziv_jmeno, heslo) VALUES (“pcvrcek“,“nějaké_heslo“);

Předcházející názorná ukázka přidá v tabulce prihlaseni_uzivatele do pole uziv_jmeno hodnotu “pcvrcek“ a do pole heslo přidá zvolené heslo. Obsahuje-li tabulka ještě další pole, pak budou doplněna prázdnou hodnotou nebo hodnotou implicitní (je-li nadefinována). (Upozornění: Pokud některé pole neumožňuje uložit prázdnou hodnotu např. při použití atributu NOT NULL a zároveň nemá nadefinovanou implicitní hodnotu, pak musíme do tohoto pole vždy zadat příslušnou hodnotu – dle datového typu.) Potřebujete-li do tabulky vložit příslušné hodnoty do všech polí, učiníte tak drobnou modifikací předcházejícího příkladu: INSERT INTO prihlaseni_uzivatele VALUES (“hodnota1“,“hodnota2“,...... );

Předcházející způsob má jedno malé úskalí – jednotlivé hodnoty musíte zadávat v takovém pořadí, v jakém jsou nadefinovány v tabulce, jinak se vyskytne chyba. Všechny dosud uvedené příklady lze obohatit o nepovinné pasáže, které chování příkazu INSERT v MySQL trochu upraví. Asi nejčastěji využijete možnost pozdržet příkaz INSERT. MySQL totiž vyhodnocuje prioritu jednotlivých příkazů. Zatímco příkazy INSERT, UPDATE a DELETE mají vysokou prioritu, například příkaz SELECT ji má přesně opačnou. Nyní uvedu konkrétní příklad. Máte databázi, která je hodně vytížená výběrovými dotazy (SELECT). Budete chtít vykonat několik příkazů INSERT, ale zároveň nechcete, aby vykonání těchto příkazů pocítili ostatní uživatelé. Proto použijte v příkazu INSERT klíčové slůvko DELAYED, které vám zaručí, že tyto příkazy budou vykonány až tehdy, nebude-li nikdo s příslušnou tabulkou pracovat. Tento přístup umožní, aby databáze měla lepší výkon. Příklad: INSERT DELAYED INTO prihlaseni_uzivatele (uziv_jmeno, heslo) VALUES (“pcvrcek“,“nějaké_heslo“);

Další velice zajímavou možností je zaplnit tabulku záznamy z jiné již existující tabulky. Osobně tuto možnost často využívám. Jedná se o to, že zkombinujete (laicky řečeno) příkaz INSERT s příkazem SELECT (viz příští díl). Vypadá to třeba následovně: INSERT INTO prihlaseni_uzivatele (uziv_jmeno, heslo) VALUES SELECT jmeno, heslo FROM zakaznici;

Aktualizace záznamu

Existuje mnoho případů, kdy rádi využijete možnost již uložený záznam aktualizovat. K tomuto slouží v MySQL příkaz UPDATE. Jeho syntaxe vypadá následovně:

UPDATE [LOW_PRIORITY] [IGNORE] název_tabulky SET pole=nová_hodnota [WHERE podmínka] [LIMIT #];

Pokud jste se tedy rozhodli aktualizovat nějaký záznam (nebo více záznamů), bude to vypadat třeba takto: UPDATE prihlaseni_uzivatele SET  heslo=“nove_heslo“ WHERE uziv_jmeno=“pcvrcek“;

Po provedení tohoto příkazu se u uživatelského jména pcvrcek změní heslo. Pokud chcete změnu aplikovat na všechny záznamy v tabulce, jednoduše odeberete podmínkovou pasáž (WHERE). Jedním aktualizačním dotazem přitom nemusíte aktualizovat pouze jedno pole, ale i několik najednou. Příklad: UPDATE prihlaseni_uzivatele SET heslo=“nové_heslo“, adresa=“nová_adresa“ WHERE uzivatel=“pcvrcek“;

Výmaz záznamu

Poslední z trojice příkazů, o kterých jsem se chtěl dnes zmínit, je příkaz DELETE. Tento příkaz slouží k odstraňování záznamu z tabulky. Podobně jako UPDATE, tak i DELETE je dotaz destrukční, takže jej využívejte s maximální opatrností. Jak víte, v MySQL neexistuje tlačítko „zpět“, které by vám vrátilo již jednou odstraněná či upravená data. Buďte proto při jeho používání obezřetní.

Syntaxe příkazu DELETE vypadá následovně: DELETE [LOW_PRIORITY] FROM název_tabulky [WHERE podmínka] [LIMIT x];

Jak vidíte, syntaxe je jednoduchá. Pro ilustraci uvedu následující příklad: DELETE FROM aktivni_uzivatele WHERE odezva>900;

Předcházející formát příkazu odstraní z tabulky aktivni_uzivatele všechny uživatele, kteří delší dobu nevznesli žádný dotaz (v tomto případě 15 minut). Možná vás teď napadlo, co by se asi stalo, kdyby se podmínka neuvedla vůbec. Na to existuje jednoznačná odpověď – vymazala by se celá tabulka resp. všechna data v ní. Proto si vždy dávejte pozor, abyste část WHERE nikdy nevynechali! Zajímavou možností je doplnění podmínky o hodnotu, která udává, kolik se smí maximální odstranit záznamu. Uvedu příklad. Máte tabulku s cca. 5000 záznamy a podmínce uvedené u příkazu DELETE jich vyhovuje polovina. Kdybyste se rozhodli tyto záznamy vymazat najedou, vedlo by to k velkému zatížení, což by bylo u vytíženého systému hodně špatné. Zde se tedy hodí již popsaná část LIMIT. Nejlépe ji představím na praktickém příkladě: DELETE uzivatele WHERE Rok <1983 LIMIT 100;

Výše uvedený příklad vymaže prvních 100 záznamů, které vyhovují dané podmínce. Tuto podmínku lze následně ve vhodnou dobu opakovat, dokud nebudou odstraněny všechny potřebné záznamy. Mnohdy je to velice efektivní řešení – i když vždy záleží na konkrétním příkladě. To by bylo pro dnešek vše. Myslím, že jako stručný přehled by to stačilo. Pro podrobnější informace doporučuji nahlédnout do manuálu. Příště vám povím něco o výběrových dotazech.

Diskuze (4) Další článek: Xbox bude o 2 GB chudší

Témata článku: Software, Programování, Select, Update, Špatný klíč, Výmaz, Opatrnost, Špatná podmínka, Maximální vytížení, From, Code, Jednoznačná odpověď, Úprava, Vytížení, Pole, Syntax, Maximální hodnota, MySQL, Názorná ukázka, Vkládání, Uložený záznam


Určitě si přečtěte

Pojďme programovat elektroniku: Rádiový čip, který má skoro každá bezdrátová myš

Pojďme programovat elektroniku: Rádiový čip, který má skoro každá bezdrátová myš

** Bezdrátové myši řídí čip od Nordic Semiconductors ** Jeho rádiové vysílače si před lety oblíbila i komunita kutilů ** Dnes si je vyzkoušíme v praxi

Jakub Čížek | 9

Už desítky let se pokoušíme odposlouchávat mozek. Rusům se podařil kousek, ze kterého vám spadne brada

Už desítky let se pokoušíme odposlouchávat mozek. Rusům se podařil kousek, ze kterého vám spadne brada

** K odposlechu mozků používáme EEG ** To má ale žalostné informační rozlišení ** Rusům pomohla počítačová neuronová síť

Jakub Čížek | 29

Pozor, na Česko v těchto dnech útočí falešné Tesco, Penny Market a Lidl

Pozor, na Česko v těchto dnech útočí falešné Tesco, Penny Market a Lidl

** Máme tu další českou phishingovou vlnu ** Podle průzkumů máme stále problém s kybernetickou gramotností ** Nebezpečím jsou děti, které opouštějí rodiče

Jakub Čížek | 34


Aktuální číslo časopisu Computer

Megatest: 20 powerbank s USB-C

Test: mobily do 3 500 Kč

Radíme s výběrem routeru

Tipy na nejlepší vánoční dárky