mysql update statement tutorial update query syntax examples
Tento výukový program vysvětluje prohlášení MySQL UPDATE spolu se syntaxí dotazů a příklady. Naučíte se také různé varianty příkazu MySQL Update Table:
Stejně jako u jakékoli jiné databáze vždy existuje potřeba aktualizovat nebo upravit nebo změnit stávající data v tabulkách. V MySQL máme příkaz UPDATE, který lze použít k aktualizaci nebo úpravě dat v tabulce.
Pomocí tohoto příkazu můžeme aktualizovat jedno nebo více polí. Můžeme aktualizovat hodnoty konkrétní tabulky najednou. Pomocí klauzule WHERE můžeme specifikovat použité podmínky, zejména když je potřeba aktualizovat konkrétní řádky z tabulky.
Než budete pokračovat, vezměte prosím na vědomí, že používáme MySQL verze 8.0. Můžete si jej stáhnout z tady.
Co se naučíte:
Syntaxe tabulky MySQL UPDATE
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Vysvětlení syntaxe:
- Syntaxe začíná klíčovým slovem „UPDATE“, čímž informuje server MySQL o typu činnosti, která má být provedena. Toto je povinné klíčové slovo a nelze jej vynechat.
- Dále přichází název tabulky, ve které je třeba provést aktualizaci. Toto je povinné a nelze jej vynechat.
- Za třetí, je to opět klíčové slovo - SET. Toto klíčové slovo informuje server MySQL o hodnotách, které mají být aktualizovány pro názvy sloupců. Toto je povinné klíčové slovo a nelze jej vynechat.
- Dále budou aktualizovány názvy sloupců a jejich odpovídající hodnoty. To je také povinné a nelze jej vynechat.
- Poté přichází podmínka WHERE, která omezuje nebo filtruje počet cílových řádků, na které je třeba použít akci UPDATE. WHERE je také klíčové slovo, ale volitelné.
Klauzule WHERE je však významná. Pokud není uvedeno nebo pokud není podmínka správně nastavena, nebude aktualizována ani tabulka, ani nepotřebné řádky.
Modifikátory ve výpisu tabulky UPDATE
Níže jsou uvedeny modifikátory v příkazu UPDATE.
LOW_PRIORITY: Tento modifikátor informuje MySQL Engine o zpoždění aktualizace, dokud z tabulky nebude číst připojení.
IGNOROVAT: Tento modifikátor informuje MySQL Engine, aby pokračoval v operaci UPDATE, i když se vyskytnou nějaké chyby. Na řádcích, které způsobily chyby, se neprovádí žádná aktualizace.
Příklad aktualizace MySQL
Níže je uvedena ukázková tabulka vytvořená v MySQL.
Název schématu: Pacifik
Název tabulky: zaměstnanci
Názvy sloupců:
- empNum - obsahuje celočíselné hodnoty pro číslo zaměstnance.
- lastName - Obsahuje hodnoty varchar pro příjmení zaměstnance.
- firstName - Zadržuje hodnoty varchar pro křestní jméno zaměstnance.
- e-mail - obsahuje hodnoty varchar pro e-mailové ID zaměstnance.
- deptNum - Obsahuje varchar pro ID oddělení, ke kterému zaměstnanec patří.
- plat - obsahuje desítkové hodnoty platu pro každého zaměstnance.
Název schématu: Pacifik
Název tabulky: oddělení
Názvy sloupců:
- deptNum - Obsahuje varchar pro ID oddělení v organizaci.
- město - obsahuje název města, ze kterého oddělení pracují.
- country - Obsahuje název země odpovídající městu.
- bonus - Obsahuje procentuální hodnotu bonusu.
Příkaz tabulky MySQL UPDATE
# 1) Aktualizace MySQL Single Column
Nyní zjistíme záznam, který bychom chtěli aktualizovat. Nejprve se podíváme na scénář, kde musíme aktualizovat jeden sloupec pomocí klíčového slova UPDATE.
Zde je zaměstnanec s číslem zaměstnance 1008.
Dotaz a jeho odpovídající výsledky jsou následující:
Pojďme aktualizovat e-mailové ID tohoto zaměstnance z ob@gmail.com na oliver.bailey@gmail.com pomocí klíčového slova UPDATE.
AKTUALIZACE: Klíčové slovo informuje stroj MySQL, že prohlášení je o aktualizaci tabulky.
SOUBOR: Tato klauzule nastavuje hodnotu názvu sloupce uvedeného za tímto klíčovým slovem na novou hodnotu.
KDE: Tato klauzule určuje konkrétní řádek, který má být aktualizován.
Po provedení příkazu UPDATE bude na výstupu statistika související s provedením příkazu.
Zobrazí se následující podrobnosti:
- Prohlášení, které bylo provedeno.
- Zprávy, které zobrazují počet řádků, které byly aktualizovány, a pokud existují nějaká varování.
Abychom mohli ověřit výstup příkazu UPDATE, provedeme znovu příkaz SELECT, abychom viděli změnu v e-mailovém ID.
Snapshot tabulky před:
empNum | jméno | příjmení | e-mailem | odd |
---|---|---|---|---|
7 | Řím | Itálie | ||
1008 | Oliver | Bailey | ob@gmail.com | 3 |
Dotaz:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Snapshot tabulky po:
empNum | jméno | příjmení | e-mailem | odd |
---|---|---|---|---|
1008 | Oliver | Bailey | oliver.bailey@gmail.com | 3 |
# 2) Aktualizace MySQL více sloupců
Syntaxe pro aktualizaci více než jednoho sloupce pomocí příkazu UPDATE je stejná jako syntaxe aktualizace jednoho sloupce. Jeden jediný příkaz SET bude mít více názvů sloupců spolu s jeho novou hodnotou, kterou je třeba nastavit, oddělené čárkou.
Pojďme se podívat na řádek, který musíme aktualizovat. Řádek s číslem zaměstnance 1003.
Zde se pokusíme aktualizovat příjmení z „Mary“ na „Margaret“ a poté e-mailové ID z ml@gmail.com na margaret.langaley@gmail.com.
Následuje dotaz UPDATE. Sledujte názvy sloupců oddělené čárkou.
Výstup z výše uvedeného provedení zobrazuje stejné statistiky jako v předchozím případě.
Následuje výstup pro stejný záznam po provedení příkazu UPDATE.
Snapshot tabulky před:
empNum | jméno | příjmení | e-mailem | odd |
---|---|---|---|---|
1003 | Mary | Langley | ml@gmail.com | dva |
Dotaz:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Snapshot tabulky po:
empNum | jméno | příjmení | e-mailem | odd |
---|---|---|---|---|
1003 | Margaret | Langley | margaret.langley@gmail.com | 3 |
# 3) Aktualizace MySQL s funkcí REPLACE
Podívejme se více na používání funkce REPLACE k AKTUALIZACI řádků v tabulce. Tady je náš cílový záznam, který chceme aktualizovat.
Níže uvedený záznam je pro zaměstnance číslo 1010. Budeme se snažit aktualizovat ID e-mailu z ja@gmail.com na jacob.armstrong@gmail.com.
Použijme následující UPDATE dotaz s funkcí REPLACE, která aktualizuje ID e-mailu.
Následují parametry předávané ve funkci REPLACE. Všechny 3 parametry mají poziční charakter, tj. Pořadí parametrů nelze změnit.
1SvatýParametr - obsahuje název e-mailového ID.
dvandParametr - obsahuje FROM e-mailové ID, které se má změnit.
3rdParametr - obsahuje TO e-mailové ID, což je nová hodnota.
Následuje snímek tabulky po provedení příkazu UPDATE:
Snapshot tabulky před:
empNum | jméno | příjmení | e-mailem | odd |
---|---|---|---|---|
1010 | Jacob | Armstrong | ja@gmail.com | 4 |
Dotaz:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ;
Snapshot tabulky po:
empNum | jméno | příjmení | e-mailem | odd |
---|---|---|---|---|
1010 | Jacob | Armstrong | jacob.armstrong@gmail.com | 4 |
# 4) Aktualizace MySQL pomocí příkazu SELECT
V tomto typu UPDATE je nová hodnota pro sloupec, který má být aktualizován, načtena příkazem SELECT v poddotazu. Pojďme si tedy vzít příklad z naší tabulky „zaměstnanců“. Tady je náš cílový záznam, který chceme aktualizovat.
V tomto případě budeme aktualizovat číslo oddělení, tj. Sloupec deptNum, pomocí tabulek oddělení. Podíváme-li se na tabulku kateder, odpovídá deptNum = 5 Berlínu. Přesuňme tohoto zaměstnance do Charlotte na deptNum = 2.
K dosažení tohoto úkolu se používá následující příkaz UPDATE:
Abychom mohli ověřit výstup našeho příkazu UPDATE, provedeme VYBRAT tvrzení.
Jak je uvedeno výše, hodnota sloupce deptNum byla aktualizována na „2“.
Snapshot tabulky před:
empNum | jméno | příjmení | e-mailem | odd |
---|---|---|---|---|
1005 | Petr | číst | pl@gmail.com | 5 |
odd | Město | Země |
---|---|---|
1 | New York | Spojené státy |
dva | Charlotte | Spojené státy |
3 | Chicago | Spojené státy |
4 | Londýn | Anglie |
5 | Berlín | Německo |
6 | Bombaj | Indie |
Dotaz:
Snapshot tabulky po:
empNum jméno příjmení e-mailem odd 7 Řím Itálie NULA 1005 Petr číst pl@gmail.com dva
# 5) MySQL UPDATE více řádků
Někdy můžeme čelit požadavku, kdy musíme aktualizovat jeden nebo více sloupců pro více řádků s různými hodnotami.
Například, chceme dát konkrétní část bonusového oddělení rozumně, tj. všichni zaměstnanci v oddělení by měli získat určitou částku bonusu.
nejlepší systémové nástroje pro Windows 10
Obecná syntaxe je následující:
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
Abychom to vysvětlili na příkladu, přidáme do tabulek oddělení ještě jeden sloupec. Do tabulky oddělení přidáme sloupec „bonus“. Myšlenkou je přiřadit každému oddělení bonusové procento a zvýšit plat zaměstnanců o toto procento odpovídající každému oddělení.
Abychom toho dosáhli, provedeme následující ALTER příkazy pro přidání sloupce:
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);
Následuje struktura tabulky po výše uvedených změnách. Nové sloupce budou přidány pomocí NULA jako hodnota.

Dále napíšeme UPDATE dotaz, který aktualizuje bonusové procento pro každé oddělení.

Po provedení výše uvedeného příkazu je následující snímek s aktualizovanými hodnotami pro sloupec Bonus.

Snapshot tabulky před:
odd Město Země Bonus 1 New York Spojené státy NULA dva Charlotte Spojené státy NULA 3 Chicago Spojené státy NULA 4 Londýn Anglie NULA 5 Berlín Německo NULA 6 Bombaj Indie NULA
Dotaz:
UPDATE departments SET bonus = CASE WHEN deptNum = 1 THEN 3.00 WHEN deptNum= 2 THEN 5.00 WHEN deptNum= 3 THEN 8.00 WHEN deptNum= 4 THEN 10.00 WHEN deptNum= 5 THEN 13.00 WHEN deptNum= 6 THEN 15.00 WHEN deptNum= 7 THEN 18.00 END;
Snapshot tabulky po:
odd Město Země Bonus 7 Řím Itálie 18 1 New York Spojené státy 3 dva Charlotte Spojené státy 5 3 Chicago Spojené státy 8 4 Londýn Anglie 10 5 Berlín Německo 13 6 Bombaj Indie patnáct
# 6) AKTUALIZACE MySQL pomocí klíčového slova INNER JOIN
PŘIPOJIT SE je jedním z nejdůležitějších klíčových slov v příkazech SQL. Obvykle jste jej mohli použít v příkazu SELECT.
V zásadě existují čtyři typy příkazů JOIN:
- VNITŘNÍ SPOJENÍ: Načte záznamy, které jsou běžné v obou tabulkách.
- LEFT JOIN: Načte všechny záznamy z tabulky na levé straně klíčového slova a odpovídající záznamy z tabulky na pravé straně klíčového slova.
- SPRÁVNÉ PŘIPOJENÍ: Načte všechny záznamy z tabulky na pravé straně klíčového slova a odpovídající záznamy z tabulky na levé straně klíčového slova.
- VNĚJŠÍ PŘIPOJENÍ: Načte všechny záznamy z obou tabulek, s odpovídajícími neodpovídajícími záznamy reprezentovanými jako NULL.
MySQL poskytuje jedinečnou příležitost používat JOIN i v příkazech UPDATE k provádění aktualizací mezi tabulkami. Je však omezen pouze na INNER JOIN a LEFT JOIN.
Obecná syntaxe příkazu UPDATE používající klíčové slovo JOIN je následující:
UPDATE TAB1, TAB2, (INNER JOIN | LEFT JOIN) TAB1 ON TAB1.COL1 = TAB2.COL1 SET TAB1.COL2 = TAB2.COL2, TAB2.COL3 = expr WHERE condition
- Zde příkaz UPDATE očekává tři datové položky.
- Názvy tabulek TAB1 a TAB2, na kterých se provádí spojení.
- Typ PŘIPOJENÍ, který hodláme provést, VNITŘNÍ nebo LEVÝ.
- Poté následuje příkaz SET, pomocí kterého můžeme aktualizovat hodnoty sloupců buď v / nebo TAB1 a TAB2.
- A konečně klauzule WHERE k aktualizaci pouze těch řádků, které vyhovují našim kritériím.
Abychom to vysvětlili na příkladu, přidáme do tabulky Zaměstnanci jeden další sloupec. Do tabulky Zaměstnanci přidáme sloupec „plat“. Cílem je zvýšit plat zaměstnanců o procentní hodnotu bonusu ve sloupci bonusů v tabulce oddělení.
Abychom toho dosáhli, provedeme následující ALTER příkazy pro přidání sloupce:
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);
Dále vyplníme dvě nová pole, která jsme přidali. Po naplnění hodnot je obsah tabulky následující.
Tabulka zaměstnanců:
empNum jméno příjmení e-mailem odd Plat 1007 Schmitt James js@gmail.com 4 18000 1001 Andrews Zvedák ja@gmail.com 1 3000 1002 Schwatz Mike ms@gmail.com 1 5000 1003 Langley Margaret margaret.langley@gmail.com dva 8000 1004 Harera Sandra sh@gmail.com 1 10 000 1005 číst Petr pl@gmail.com dva 13000 1006 Keith Jenny jk@gmail.com dva 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 Pohár Harry hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
Pojďme nyní použít klíčové slovo JOIN a aktualizovat plat všech zaměstnanců o procentní bonus v tabulce oddělení. Zde je deptNum klíč, na kterém budou tyto dvě tabulky porovnány.
F Níže je přehled platů zaměstnanců k dnešnímu dni:

Snapshot from Departments table is as follows:

Následuje dotaz UPDATE, který aktualizuje plat zaměstnanců na základě procenta bonusu v tabulkách oddělení na základě sloupce klíče deptNum.

Nyní ověřme plat každého zaměstnance po zvýšení.

Pokud to porovnáte s předchozím momentem, můžete snadno pochopit bonusové procento přidané k platu.
Všichni zaměstnanci musí povzbuzovat!
Snapshot tabulky před:
empNum jméno příjmení e-mailem odd Plat 1007 Schmitt James js@gmail.com 4 18000 1001 Andrews Zvedák ja@gmail.com 1 3000 1002 Schwatz Mike ms@gmail.com 1 5000 1003 Langley Margaret margaret.langley@gmail.com dva 8000 1004 Harera Sandra sh@gmail.com 1 10 000 1005 číst Petr pl@gmail.com dva 13000 1006 Keith Jenny jk@gmail.com dva 15000 1008 Bailey Oliver oliver.bailey@gmail.com 3 21000 1009 Pohár Harry hb@gmail.com 5 24000 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 27000
odd Město Země Bonus 7 Řím Itálie 18 1 New York Spojené státy 3 dva Charlotte Spojené státy 5 3 Chicago Spojené státy 8 4 Londýn Anglie 10 5 Berlín Německo 13 6 Bombaj Indie patnáct
Dotaz:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ;
Snapshot tabulky po:
empNum jméno příjmení e-mailem odd Plat 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Zvedák ja@gmail.com 1 3182.7 1002 Schwatz Mike ms@gmail.com 1 5304,5 1003 Langley Margaret margaret.langley@gmail.com dva 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 číst Petr pl@gmail.com dva 14332,5 1006 Keith Jenny jk@gmail.com dva 16537,5 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494,4 1009 Pohár Harry hb@gmail.com 5 30645.6 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670
# 7) AKTUALIZACE MySQL pomocí LEFT JOIN klíčového slova
Jak je vysvětleno v předchozí části, existují dva typy JOIN, které jsou povoleny v MySQL UPDATE. Už jsme viděli UPDATE pomocí INNER JOIN.
Začněme s UPDATE pomocí LEFT JOIN.
Příklad:
Máme nového zaměstnavatele, který ještě nebude přidělen k žádnému oddělení. Musíme ale dát všem novým najatým bonus 1%. Nyní, protože nový nábor není přiřazen žádnému oddělení, nebudeme moci z této tabulky získat žádné informace o procentech bonusu. V takovém případě budeme AKTUALIZOVAT plat pro nové zaměstnance pomocí LEFT JOIN.
Abychom toho dosáhli, přidejme do databáze zaměstnanců nového zaměstnance.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00);
Následuje nový záznam, který jsme přidali:

Tabulka zaměstnanců:
empNum jméno příjmení e-mailem odd Plat 1007 Schmitt James js@gmail.com 4 21780 1001 Andrews Zvedák ja@gmail.com 1 3183 1002 Schwatz Mike ms@gmail.com 1 5305 1003 Langley Margaret margaret.langley@gmail.com dva 8820 1004 Harera Sandra sh@gmail.com 1 10609 1005 číst Petr pl@gmail.com dva 14333 1006 Keith Jenny jk@gmail.com dva 16538 1008 Bailey Oliver oliver.bailey@gmail.com 3 24494 1009 Pohár Harry hb@gmail.com 5 30646 1010 Armstrong Jacob jacob.armstrong@gmail.com 4 32670 1011 Hanks Tom th@gmail.com NULA 10 000
Dále poskytneme Tomovi bonus 1% k jeho platu pomocí příkazu UPDATE s klauzulí LEFT JOIN:

Níže je uveden plat TOM po zvýšení.

Pokud to porovnáte s předchozím momentem, můžete snadno pochopit bonusové% přidané k platu.
Snapshot tabulky před:
empNum jméno příjmení e-mailem odd Plat 1011 Tom Hanks th@gmail.com NULA 10 000
Dotaz:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ;
Snapshot tabulky po:
empNum jméno příjmení e-mailem odd Plat 1011 Tom Hanks th@gmail.com NULA 10100
Doporučené čtení = >> MySQL se připojuje
Často kladené otázky a odpovědi
Otázka č. 1) Jak mohu aktualizovat atributy v MySQL?
Odpovědět: Můžeme aktualizovat atributy pomocí příkazu MySQL UPDATE, přičemž prohlášení začíná klíčovým slovem UPDATE následovaným názvem tabulky. Dále je klauzule SET následovaná názvem sloupce a klauzulí WHERE.
Otázka č. 2) Jak aktualizujete více záznamů v MySQL?
Odpovědět: Jak je znázorněno výše, pod „Aktualizovat více řádků“ sekce můžeme pomocí příkazu CASE aktualizovat více řádků pro jeden nebo více sloupců se stejnými nebo různými hodnotami.
Otázka č. 3) Můžeme použít JOIN v aktualizaci dotazu v MySQL?
Odpovědět: Ano, MySQL umožňuje používat JOIN v příkazech UPDATE. Je však omezeno pouze na VNITŘNÍ a LEVÉ PŘIPOJENÍ.
Otázka č. 4) Odkud stahovat MySQL?
Odpovědět: MySQL verze 8.0 si můžete stáhnout zde: MySQL .
Otázka č. 5) Jaký je význam klauzule WHERE v prohlášení Update?
Odpovědět: Klauzule WHERE omezuje počet řádků, které by měly odpovídat kritériím klauzule UPDATE.
Doporučené čtení = >> Jak používat Prohlášení MySQL If
Závěr
V tomto tutoriálu jsme se tedy dozvěděli o 7 různých způsobech provádění příkazů MySQL UPDATE.
- Aktualizujte jeden sloupec
- Aktualizujte více sloupců
- Aktualizujte pomocí REPLACE
- Aktualizujte pomocí SELECT
- Aktualizujte více řádků
- Aktualizujte pomocí INNER JOIN
- Aktualizujte pomocí LEFT JOIN
Můžeme použít některý z těchto, na základě našich požadavků.
Šťastné čtení!!
Doporučené čtení
- Rozdíl mezi SQL Vs MySQL Vs SQL Server (s příklady)
- Top 40 nejlepších otázek a odpovědí na rozhovor s MySQL (2021 otázek)
- Aktualizace MongoDB a odstranění dokumentu s příklady
- C # Použití příkazu a C # Virtuální metoda s příklady
- Výukový program o podmíněných příkazech C #
- Výukový program Java Reflection s příklady
- Výukový program Python DateTime s příklady
- Výukový program Bugzilla: Výukový program pro správu defektů