MySQL aneb u?íme se SQL jazyk (IX.)

Autor: Ji?í Luká? <jirilukas(at)supersvet.cz>, Téma: MySQL, Vydáno dne: 29. 11. 2000

Vítám v?echny p?íznivce rela?ních databázových systém? u dne?ního - v po?adí ji? devátého dílu - seriálu "MySQL aneb u?íme se SQL jazyk", v jeho? úvodu nejprve dokon?íme kapitolu v?novanou SQL p?íkazu DELETE, abychom se dále mohli neru?en? v?novat nové kapitole s názvem: "Úprava hodnot v tabulkách".

Vzorový p?íklad ?íslo dev?t: (Zadání: Vyma?te z tabulky "zamestnanec" v?echny záznamy, jejich? hodnota ve sloupci "prijmeni" odpovídá hodnot? "Ryba"! Poznámka: P?ed a po provedení vý?e zadaného p?íkladu prove?te výpis v?ech dat z tabulky a porovnejte výsledky t?chto dvou výpis?.)

?e?ení:

mysql> DELETE FROM zamestnanec
    -> WHERE prijmeni="Ryba";
Query OK, 1 row affected (0.05 sec)

Za p?edpokladu, ?e jste v?dy postupovali dle mých pokyn? a nep?idávali jste do tabulky "zamestnanec" ?ádné své záznamy, tak by m?l vý?e uvedený p?íklad dev?t z va?í tabulky odstranit jeden ?ádek s hodnotou 2 ve sloupci "poradove_cislo".

Pozor! Databázový server MySQL není "case sensitive" (nerozli?uje velká a malá písmena) a proto ani nelze o?ekávat, ?e by dokázal "správn?" zodpov?d?t dotaz zalo?ený na podmínce tohoto druhu.

Poznámka: Je?t? jednou opakuji, ?e pokud vynecháte pod p?íkaz WHERE z SQL p?íkazu DELETE, tak dojde k vymazání v?ech dat z tabulky specifikované v syntaxi p?íkazu DELETE, z ?eho? vyplývá, ?e není radno si s tímto p?íkazem hrát více, ne? je nezbytn? nutné.

Úprava hodnot v tabulkách

Jeliko? je velmi pravd?podobné, ?e se b?hem aktivní práce s va?í databází dostanete do takové situace, kdy budete pot?ebovat upravit n?jaké d?íve provedené záznamy, obsahuje instruk?ní sada SQL jazyku p?íkaz UPDATE, s jeho? pomocí lze takovou operaci velmi rychle provést a to dokonce i pro více ?ádk?, které spl?ují zadanou podmínku.

Syntaxe: UPDATE jméno_tabulky SET ozna?ení_sloupce = nová_hodnota WHERE podmínka

Podíváte-li se na vý?e uvedenou syntaxi pon?kud detailn?ji, tak zjistíte, ?e se skládá: z jednoho klí?ového (volacího) slova, specifikace jména tabulky, které se p?íkaz týká a dvou pod p?íkaz?, které zásadním zp?sobem ovliv?ují výsledek celého p?íkazu. - První ze dvou vý?e jmenovaných pod p?íkaz? uvozený klí?ových slovem SET databázovému serveru ?íká, jakou novou hodnotu má p?i?adit upravovanému sloupci a druhý pod p?íkaz (- mimochodem nám dob?e známý podmínkový pod p?íkaz, se kterým jsme se poprvé setkali p?i výkladu SQL p?íkazu SELECT) jasn? definuje, kterých ?ádk? v tabulce se tato úprava týká.

Poznámka: V p?ípad?, ?e p?i zápisu SQL p?íkazu UPDATE vynecháte pod p?íkaz WHERE, bude úprava specifikovaná pod p?íkazem SET aplikována na v?echny ?ádky (data) v tabulce.

No a proto?e mým oblíbeným slovem je: "praxe", bude nyní následovat malá série p?íklad?, na kterých si uká?eme, jak tento SQL p?íkaz pracuje a ?eho v?eho lze dosáhnout.

Vzorový p?íklad ?íslo deset: (Zadání: A) Zvy?te v?em zam?stnanc?m 10x hodnotu jejich platu. B) Zm??te vý?i platu "Davida Mikese" ze sou?asného stavu na 70000,-- K?. C) Zm??te v?echny hodnoty ve sloupci "jmeno", které se rovnají hodnot? "Petr", na novou hodnotu "Jan". Poznámka: V?echny úkony prove?te tak, jak po sob? následují a pak prove?te výpis ve?kerého obsahu tabulky "zamestnanec".)

?e?ení (A, B, C):

mysql> update zamestnanec set plat=plat*10;
Query OK, 5 rows affected (0.05)
Rows matched: 5  Changed: 5  Warnings: 0

mysql> update zamestnanec set plat=70000
    -> where prijmeni="Mikes" and jmeno="David";
Query OK, 1 row affected (0.00)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update zamestnanec set jmeno="Jan" where jmeno="Petr";
Query OK, 2 rows affected (0.00)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> SELECT * FROM zamestnanec;
+----------------+-------+------------+----------+
| poradove_cislo | jmeno | prijmeni   | plat     |
+----------------+-------+------------+----------+
|              1 | Jan   | Novak      | 50000.00 |
|              3 | Jiri  | Lopata     | 50000.00 |
|              4 | David | Mikes      | 70000.00 |
|              5 | Tomas | Privratsky | 65000.00 |
|              6 | Jan   | Vomacka    | 90000.00 |
+----------------+-------+------------+----------+
5 rows in set (0.05 sec)

P?eji p?íjemné SQL testování ...




Copyright supersvet.cz, 1998-2005