Aktualizácia Mysql je komplexný aktualizačný dotaz. Referenčná príručka MySQL

Aktualizácia Mysql je komplexný aktualizačný dotaz. Referenčná príručka MySQL

Aktualizácia údajov v databáze znamená zmenu hodnôt v existujúcich záznamoch tabuľky. V tomto prípade je možné zmeniť hodnoty polí v skupine riadkov (dokonca aj všetky riadky tabuľky), ako aj upraviť hodnotu poľa v samostatnom riadku.

V SQL môžete zmeniť záznam v databázovej tabuľke pomocou príkazu UPDATE. Vo svojej najmenšej podobe vyzerá príkaz na aktualizáciu údajov takto:

AKTUALIZOVAŤ pole SET tabuľky = hodnota

Tu, AKTUALIZOVAŤ– príkaz označujúci, že požiadavka je aktualizovať údaje;

tabuľky– názov tabuľky, v ktorej budú vykonané zmeny;

SET– príkaz, za ktorým nasledujú polia oddelené čiarkami s priradenými hodnotami;

lúka– pole tabuľky, v ktorom sa vykoná zmena;

význam– nová hodnota, ktorá sa zadá do poľa.


Ak napríklad potrebujete nastaviť pole vo všetkých riadkoch tabuľky na nulu, môžete spustiť nasledujúci dotaz:

AKTUALIZOVAŤ SET cena tovaru = 0

V tomto prípade bude mať pole ceny vo všetkých dostupných riadkoch tabuľky hodnotu 0.

Zmena jednej hodnoty

Zmena hodnôt všetkých polí v tabuľke je extrémne zriedkavá. Najčastejšie je potrebné zmeniť hodnotu konkrétneho záznamu. Za týmto účelom sa na koniec riadku s príkazom UPDATE pridá direktíva WHERE, ktorá určuje podmienku, ktorá určuje, na ktorom riadku sa má operácia aktualizácie vykonať.

Je tam tabuľka:

Potrebujeme napríklad aktualizovať náklady na produkt o jeho známu hodnotu č. Ak to chcete urobiť, spustite nasledujúci dotaz:

AKTUALIZOVAŤ tovar SET cena = 150 KDE num = 2

Teraz, pred operáciou zmeny polí, sa vyberie riadok, ktorý spĺňa podmienku num = 2. V tabuľke je len jeden takýto riadok. V tomto sklade bude cena zmenená na hodnotu 150. Výsledkom je tabuľka so zmenenou cenou produktu.

Vykonávanie zmien vo viacerých riadkoch s podmienkou výberu

Ak si pamätáte všetku rozmanitosť podmienok v dotaze, viete si predstaviť, aké rôznorodé môžu byť vzorky. Aktualizačné dotazy sa preto môžu vykonávať buď s jedným riadkom, alebo so skupinou riadkov, alebo so všetkými riadkami tabuľky. Všetko závisí od úlohy, ktorej čelíte, ako aj od toho, na ktorých riadkoch tabuľky musíte vykonať operácie aktualizácie.

Chceme napríklad znížiť cenu všetkého tovaru, ktorý momentálne stojí 100 a viac, na polovicu. Žiadosť:

AKTUALIZOVAŤ tovar SET cena = cena / 2 KDE cena >= 100

Podmienka KDE tu obsahuje pravidlo, podľa ktorého budú vybrané len produkty s cenou 100 alebo vyššou a na produkty s cenou nižšou ako 100 sa požiadavka netýka.

cena = cena / 2– vzorec, podľa ktorého sa vypočíta nová cena tovaru. Nová cena bude napísaná rovná starej cene vydelenej dvoma.

V dôsledku vykonania takéhoto dotazu získame tabuľku so zmenenými záznamami:

Aktualizácia hodnôt vo viacerých riadkových poliach

Ak je potrebné aktualizovať niekoľko polí naraz, všetky polia s ich hodnotami sú uvedené za direktívou SET oddelené čiarkami. Napríklad musíte zmeniť názov a cenu produktu s kódom 2 na „železo“ za cenu 300:

AKTUALIZOVAŤ názov SET tovaru = "železo" , price = 300 WHERE num = 2 !}

Tento dotaz priradí každému zodpovedajúcemu poľu v riadku jeho hodnotu. A podmienka bude naznačovať, v ktorom riadku sa zmeny vykonajú.


Nasledujú hlavné typy operácií aktualizácie. Na ich základe sa generujú dotazy na riešenie väčšiny problémov s modifikáciou údajov pri vývoji pomocou SQL.

Ak potrebujeme zmeniť alebo aktualizovať údaje v MySQL, môžeme použiť príkaz SQL UPDATE. ,

gramatika

Nasleduje príkaz UPDATE na zmenu všeobecnej syntaxe SQL údajov hárka MySQL:

AKTUALIZÁCIA SADA názvu_tabuľky pole1=nová-hodnota1, pole2=nová-hodnota2

  • Môžete aktualizovať jedno alebo viac polí súčasne.
  • V klauzule WHERE môžete zadať akúkoľvek podmienku.
  • Údaje môžete aktualizovať aj v samostatnej tabuľke.

Keď potrebujete aktualizovať údaje uvedené v riadkoch tabuľky, INEKE je veľmi užitočný.

Príkazový riadok na aktualizáciu údajov

Nižšie aktualizujeme w3big_tbl zadaný v tabuľke údajov pomocou príkazu SQL UPDATE:

príklady

Nasledujúci príklad aktualizuje tabuľku údajov ako hodnotu poľa w3big_title w3big_id 3:

# mysql -u root -p heslo; Zadajte heslo:******** mysql> použite w3big; Databáza zmenená mysql> AKTUALIZÁCIA w3big_tbl -> SET w3big_title="Learning JAVA" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}

Na aktualizáciu údajov použite PHP skript

Funkcia PHP na spustenie mysql_query(). SQL príkazy, môžete použiť príkaz UPDATE SQL alebo INEKE neplatí.

Táto funkcia v MySQL> príkazový riadok efekt vykonávania príkazov SQL je rovnaký.

príklady

Nasledujúci príklad aktualizuje údaje w3big_id v poli w3big_title 3.

príkaz UPDATE— vykoná zmeny v existujúcom zázname alebo viacerých záznamoch v tabuľke SQL. Upravuje existujúce hodnoty v tabuľke alebo hlavnej tabuľke zobrazenia.

Syntax príkazu UPDATE

Syntax príkazu UPDATE

príkaz UPDATE. Základné Kľúčové slová a parametre príkazu UPDATE

  • schéma - identifikátor povolenia, zvyčajne rovnaký ako niektoré používateľské meno
  • pohľad na stôl - názov tabuľky SQL, v ktorom dochádza k zmene údajov; ak je definovaný pohľad, údaje sa upravia v hlavnej tabuľke SQL zastupovanie
  • poddotaz_1 - poddotaz, s ktorým server zaobchádza rovnako ako s pohľadom
  • sstĺpec - stĺpec tabuľky SQL alebo podania SQL, ktorých hodnota sa mení; ak je stĺpec tabuľky z vety SET sa vynechá, hodnota stĺpca zostane nezmenená
  • expr - ; tento výraz môže obsahovať hlavné premenné a voliteľné ukazovatele
  • poddotaz_2 - nová hodnota priradená príslušnému stĺpcu
  • poddotaz_3 - nová hodnota priradená príslušnému stĺpcu

KDE- definuje rozsah riadkov, ktoré sa majú upraviť tými, pre ktoré platí určitá podmienka PRAVDA; ak je táto fráza vynechaná, upravia sa všetky riadky v tabuľke alebo zobrazení.
Pri vydaní súhlasu akékoľvek Spúšťač UPDATE, definované na tabuľke.
Poddotazy. Ak ponuka SET obsahuje poddotaz, vráti presne jeden riadok pre každý upravený riadok. Každá hodnota vo výsledku poddotazu je priradená k zodpovedajúcim stĺpcom zoznamu v zátvorkách. Ak poddotaz nevracia žiadne riadky, priradí sa stĺpec NULOVÝ. Poddotazy môže vybrať údaje z upravenej tabuľky. Ponuka SET vie kombinovať výrazy a poddotazy.

Príklad príkazu UPDATE 1
Zmena hodnotenia pre všetkých kupujúcich na hodnotu rovnajúcu sa 200:

zákazníkov SET hodnotenie = 200;

Príklad príkazu UPDATE 2
Nahradenie hodnoty stĺpca vo všetkých riadkoch tabuľky sa vo všeobecnosti používa zriedka. Preto v tíme, ako v tíme VYMAZAŤ, môžete použiť predikát. Na popravu špecifikovaná náhrada hodnoty stĺpca hodnotenia pre všetkých zákazníkov, ktorých obsluhuje predajca Giovanni (snum = 1003), mali by ste zadať:

zákazníkov SET hodnotenie = 200 WHERE snum = 1001;

Príklad príkazu SQL UPDATE 3
Vo vete SET Pre stĺpce môžete zadať ľubovoľný počet hodnôt oddelených čiarkami:

Emp SET job = 'MANAGER', sal = sal + 1000, deptno = 20 WHERE ename = 'JONES';

Príklad príkazu UPDATE 4
Vo vete SET môžete zadať hodnotu NULL bez použitia špeciálnej syntaxe (napríklad IS NULL). Ak teda chcete nastaviť všetky hodnotenia zákazníkov z Londýna (mesto = 'Londýn') na NULL, zadali by ste:

zákazníkov SET hodnotenie = NULL WHERE mesto = 'Londýn';

Príklad príkazu UPDATE 5
Vysvetľuje použitie nasledujúcej syntaxe príkazu:

  • Obidve vetné formy SET spolu v jednom vyhlásení.
  • Poddotaz.
  • Klauzula WHERE, ktorá obmedzuje rozsah riadkov, ktoré možno upraviť.

Emp a SET deptno =
(VYBRAŤ deptno FROM dept WHERE loc = 'BOSTON'), (sal, comm) = ( VYBRAŤ 1.1*AVG(sal), 1.5*AVG(comm) OD emp b KDE a.deptno = b.deptno) KDE deptno IN ( VYBRAŤ deptno FROM dept WHERE loc = 'DALLAS' ALEBO loc = 'DETROIT');

Vyššie uvedené vyhlásenie robí nasledovné:

  • Upravuje iba tých zamestnancov, ktorí pracujú v Dallase alebo Detroite
  • Nastaví hodnotu stĺpca deptno pre zamestnancov z Bostonu
  • Stanoví mzdu každého zamestnanca na 1,1-násobok priemernej mzdy celého oddelenia
  • Stanovuje províziu každého zamestnanca na 1,5-násobok priemernej provízie pre celé oddelenie

V tom učebnica naučíte sa používať príkaz MySQL UPDATE so syntaxou a príkladmi.

Popis

príkaz MySQL UPDATE slúži na aktualizáciu existujúcich záznamov v tabuľke v databáze MySQL. Existujú tri syntaxe príkazu UPDATE v závislosti od typu aktualizácie, ktorú chcete vykonať.

Syntax

Jednoduchá forma syntaxe pre príkaz UPDATE pri aktualizácii jednej tabuľky v MySQL:

Teraz je úplná syntax pre príkaz MySQL UPDATE pri aktualizácii jednej tabuľky:

ALEBO
Syntax pre príkaz UPDATE pri aktualizácii jednej tabuľky údajmi z inej tabuľky v MySQL je:

ALEBO
Syntax MySQL pre príkaz UPDATE pri aktualizácii viacerých tabuliek je:

Parametre alebo argumenty

LOW_PRIORITY – voliteľné. Ak je zadaná hodnota LOW_PRIORITY, aktualizácia sa oneskorí, kým z tabuľky nebudú čítať žiadne procesy. LOW_PRIORITY možno použiť s tabuľkami MyISAM, MEMORY a MERGE, ktoré používajú uzamykanie na úrovni tabuľky.
IGNOROVAŤ – voliteľné. Ak je zadaná možnosť IGNORE, všetky chyby zaznamenané počas aktualizácie sa ignorujú. Ak by sa aktualizácia v riadku prerušila primárny kľúč alebo jedinečný index, aktualizácia na tomto riadku sa nevykoná.
stĺpec1, stĺpec2 sú stĺpce, ktoré chcete aktualizovať.
výraz1 , výraz2 — nové hodnoty na priradenie stĺpca1 , stĺpca2 . Takže stĺpcu1 je priradená hodnota výraz1 , stĺpcu2 je priradená hodnota výraz2 atď.
WHERE podmienky - voliteľné. Podmienky, ktoré musia byť splnené, aby sa aktualizácia uskutočnila.
ORDER PODĽA výrazu - voliteľné. Môže sa použiť v spojení s LIMIT na vhodné triedenie záznamov a zároveň obmedzenie počtu záznamov, ktoré sa majú aktualizovať.
LIMIT počet_riadkov – voliteľné. Ak je zadaný LIMIT, riadi maximálny počet záznamov na aktualizáciu v tabuľke. V tabuľke sa aktualizuje maximálny počet záznamov zadaný v súbore number_rows.

Príklad aktualizácie jedného stĺpca

Pozrime sa na veľmi jednoduchý príklad dotazu MySQL UPDATE.

V tomto príklade MySQL aktualizoval UPDATE pole last_name na „Ford“ v tabuľke zákazníkov, kde customer_id = 500.

Príklad aktualizácie viacerých stĺpcov

Pozrime sa na príklad MySQL UPDATE, kde môžete aktualizovať viac ako jeden stĺpec pomocou jedného príkazu UPDATE.

Ak chcete aktualizovať viacero stĺpcov, môžete tak urobiť oddelením párov stĺpec/hodnota čiarkami.
Tento príkladový príkaz MySQL UPDATE aktualizoval stav na 'Nevada' a customer_rep na 23, kde customer_id je väčšie ako 200.

Príklad aktualizácie tabuľky údajmi z inej tabuľky

Pozrime sa na príklad UPDATE, ktorý ukazuje, ako aktualizovať tabuľku údajmi z inej tabuľky v MySQL.

MySQL

Tento príklad UPDATE aktualizuje iba tabuľku zákazníkov pre všetky záznamy, kde je customer_id väčšie ako 5 000. Keď sa názov_dodávateľa z tabuľky dodávateľov zhoduje s názvom meno_zákazníka z tabuľky zákazníkov, mesto z tabuľky dodávateľov sa skopíruje do poľa mesta tabuľky zákazníkov.

Tento tutoriál MySQL vysvetľuje, ako používať MySQL AKTUALIZOVAŤ vyhlásenie so syntaxou a príkladmi.

Syntax

Vo svojej najjednoduchšej forme je syntax pre príkaz UPDATE pri aktualizácii jednej tabuľky v MySQL:

UPDATE table SET stĺpec1 = výraz1, stĺpec2 = výraz2, ... ;

Úplná syntax pre príkaz MySQL UPDATE pri aktualizácii jednej tabuľky je však:

UPDATE [ LOW_PRIORITY ] [ IGNORE ] tabuľka SET stĺpec1 = výraz1, stĺpec2 = výraz2, ... ] ;

Syntax pre príkaz UPDATE pri aktualizácii jednej tabuľky údajmi z inej tabuľky v MySQL je:

UPDATE table1 SET stĺpec1 = (SELECT výraz1 FROM tabuľka2 WHERE podmienky) ;

Syntax pre príkaz MySQL UPDATE pri aktualizácii viacerých tabuliek je:

UPDATE tabuľka1, tabuľka2, ... SET stĺpec1 = výraz1, stĺpec2 = výraz2, ... WHERE tabuľka1.stĺpec = tabuľka2.stĺpec AND podmienky;

Parametre alebo argumenty

LOW_PRIORITY Voliteľné. Ak je zadaná hodnota LOW_PRIORITY, aktualizácia sa oneskorí, kým z nej nebudú čítať žiadne procesy tabuľky. LOW_PRIORITY možno použiť s tabuľkami MyISAM, MEMORY a MERGE, ktoré používajú uzamykanie na úrovni tabuľky. IGNOROVAŤ Voliteľné. Ak je zadaná možnosť IGNORE, všetky chyby zaznamenané počas aktualizácie budú ignorované. Ak by aktualizácia riadka viedla k porušeniu primárneho kľúča alebo jedinečného indexu, aktualizácia tohto riadka sa nevykoná. stĺpec1, stĺpec2 Stĺpce, ktoré chcete aktualizovať. výraz1, výraz2 Nové hodnoty, ktoré sa majú priradiť stĺpec1, stĺpec2. Takže stĺpec1 výraz1, stĺpec2 bude priradená hodnota výraz2, a tak ďalej. KDE podmienky Voliteľné. Podmienky, ktoré musia byť splnené, aby sa aktualizácia vykonala. OBJEDNAŤ PODĽA výrazu Voliteľné. Môže sa použiť v kombinácii s LIMIT na vhodné triedenie záznamov pri obmedzovaní počtu záznamov, ktoré sa majú aktualizovať. LIMIT number_rows Voliteľné. Ak je zadaný LIMIT, riadi maximálny počet záznamov na aktualizáciu v tabuľke. Maximálne počet záznamov určený počet_riadkov

budú aktualizované v tabuľke.

Príklad – Aktualizujte jeden stĺpec

Pozrime sa na veľmi jednoduchý príklad dopytu MySQL UPDATE.

AKTUALIZÁCIA SET zákazníkov last_name = "Anderson" WHERE customer_id = 5000; Tento príklad aktualizácie MySQL by aktualizoval súbor priezvisko na "Anderson" v zákazníkov tabuľka, kde je customer_id

je 5000.

Príklad – Aktualizácia viacerých stĺpcov

Pozrime sa na príklad MySQL UPDATE, kde možno budete chcieť aktualizovať viac ako jeden stĺpec pomocou jedného príkazu UPDATE.

UPDATE customers SET state = "Kalifornia", customer_rep = 32 WHERE customer_id > 100;

Ak chcete aktualizovať viacero stĺpcov, môžete to urobiť oddelením párov stĺpec/hodnota čiarkami.štát do „Kalifornie“ a customer_rep tabuľka, kde je do 32, kde je

je väčší ako 100.

Príklad - Aktualizácia tabuľky údajmi z inej tabuľky

Pozrime sa na príklad UPDATE, ktorý ukazuje, ako aktualizovať tabuľku údajmi z inej tabuľky v MySQL.
AKTUALIZÁCIA zákazníkov
SET mesto = (VYBERTE mesto
OD dodávateľov
WHERE Suppliers.supplier_name = customers.customer_name)

WHERE customer_id > 2000; na "Anderson" v Tento príklad UPDATE by aktualizoval iba tabuľka, kde je tabuľku pre všetky záznamy, kde je väčší ako 2000. Keď meno dodavateľa z dodávateľov tabuľka zodpovedá meno dodavateľa na "Anderson" v Meno zákazníka stôl, mesto stôl, poli v na "Anderson" v tabuľky.

Príklad - Aktualizácia viacerých tabuliek

Pozrime sa na príklad UPDATE MySQL, kde možno budete chcieť vykonať aktualizáciu, ktorá zahŕňa viac ako jednu tabuľku v jednom príkaze UPDATE.

AKTUALIZÁCIA odberateľov, dodávateľov NASTAVIŤ zakaznikov.mesto = dodavatela.mesto KDE customers.customer_id = dodavatel.dodavatela;

Tento príklad príkazu MySQL UPDATE by aktualizoval stôl, poli v na "Anderson" v stôl k stôl, meno dodavateľa z zákazníkov tabuľka, kde je zodpovedá dodávateľ_id.