MySQL informacinis vadovas. SQL užklausų MySQL duomenų bazėje pavyzdžiai Kelių eilučių keitimas su pasirinkimo sąlyga

UPDATE komanda— keičia esamą įrašą arba kelis lentelės įrašus SQL. Pakeičia esamas vertes lentelėje arba pagrindinėje rodinio lentelėje.

ATNAUJINTI komandų komandų sintaksę

ATNAUJINTI komandos sintaksę

UPDATE komanda. Pagrindiniai komandos UPDATE raktiniai žodžiai ir parametrai

  • schema - leidimo identifikatorius, paprastai toks pat kaip koks nors vartotojo vardas
  • stalo vaizdas - lentelės pavadinimas SQL, kuriame keičiami duomenys; jei yra apibrėžtas rodinys, duomenys modifikuojami pagrindinėje lentelėje SQL atstovavimas
  • subquery_1 – antrinė užklausa, kurį serveris traktuoja taip pat kaip ir rodinį
  • Sustulpelis - lentelės stulpelis SQL arba pareiškimai SQL, kurio vertė keičiasi; jei lentelės stulpelis yra iš sakinio NUSTATYTI yra praleistas, stulpelio reikšmė lieka nepakitusi
  • expr - ; šioje išraiškoje gali būti pagrindiniai kintamieji ir pasirenkami indikatoriaus kintamieji
  • antrinė užklausa_2 - atitinkamam stulpeliui priskirta nauja reikšmė
  • antrinė užklausa_3 - atitinkamam stulpeliui priskirta nauja reikšmė

KUR- apibrėžia eilučių diapazoną, kurį reikia keisti tomis, kurioms yra tam tikra sąlyga TIESA; jei ši frazė praleista, visos lentelės arba rodinio eilutės yra modifikuojamos.
Kai išduodamas patvirtinimas, bet koks UPDATE aktyviklis, apibrėžta lentelėje.
Papildomos užklausos. Jei pasiūlymas NUSTATYTI yra antrinė užklausa, jis grąžina tiksliai vieną eilutę kiekvienai modifikuotai eilutei. Kiekviena antrinės užklausos rezultato reikšmė priskiriama atitinkamiems sąrašo stulpeliams skliausteliuose. Jei antrinė užklausa nepateikia jokių eilučių, stulpelis priskiriamas NULL. Papildomos užklausos gali pasirinkti duomenis iš pakeistos lentelės. Pasiūlyti NUSTATYTI gali derinti posakius ir antrinės užklausos.

UPDATE komandos 1 pavyzdys
Visų pirkėjų įvertinimo keitimas į vertę, lygią 200:

Klientai NUSTATYTIįvertinimas = 200;

UPDATE komandos 2 pavyzdys
Stulpelio reikšmės pakeitimas visose lentelės eilutėse paprastai naudojamas retai. Todėl komandoje, kaip ir komandoje IŠTRINTI, galite naudoti predikatą. Norėdami atlikti nurodytą reitingų stulpelio verčių pakeitimą, visiems klientams, kuriuos aptarnauja pardavėjas Giovanni (snum = 1003), turėtumėte įvesti:

Klientai NUSTATYTI reitingas = 200 KUR snum = 1001;

SQL UPDATE komandos 3 pavyzdys
Sakinyje NUSTATYTI Galite nurodyti bet kokį stulpelių verčių skaičių, atskirtą kableliais:

Emp NUSTATYTI darbas = 'MANAGER', sal = sal + 1000, deptno = 20 WHERE ename = 'JONES';

UPDATE komandos 4 pavyzdys
Sakinyje NUSTATYTI galite nurodyti NULL reikšmę nenaudodami jokios specialios sintaksės (pvz., IS NULL). Taigi, jei norite nustatyti visus klientų įvertinimus iš Londono (miestas = "Londonas") į NULL, įveskite:

Klientai NUSTATYTIįvertinimas = NULL WHERE miestas = 'Londonas';

UPDATE komandos 5 pavyzdys
Paaiškina šios komandos sintaksės naudojimą:

  • Abi sakinio formos NUSTATYTI kartu viename pareiškime.
  • Papildoma užklausa.
  • WHERE sąlyga, ribojanti eilučių, kurias galima keisti, diapazoną.

Emp a NUSTATYTI deptno =
(PASIRINKTI deptno FROM dept WHERE loc = 'BOSTONAS'), (sal, comm) = ( PASIRINKTI 1.1*AVG(sal), 1.5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN ( PASIRINKTI deptno FROM dept WHERE loc = 'DALAS' OR loc = 'DETROITAS');

Aukščiau pateiktas teiginys atlieka šiuos veiksmus:

  • Keičia tik tuos darbuotojus, kurie dirba Dalase arba Detroite
  • Nustato deptno stulpelio vertę darbuotojams iš Bostono
  • Kiekvienam darbuotojui nustato 1,1 viso skyriaus vidutinio darbo užmokesčio dydžio atlyginimą
  • Kiekvienam darbuotojui nustato 1,5 vidutinio komisinio dydžio viso skyriaus komisinį atlyginimą

Šioje „MySQL“ pamokoje paaiškinama, kaip naudoti „MySQL“. UPDATE pareiškimas su sintaksė ir pavyzdžiais.

Sintaksė

Paprasčiausia forma sakinio UPDATE sintaksė atnaujinant vieną MySQL lentelę yra tokia:

ATNAUJINTI lentelę SET 1 stulpelis = išraiška1, stulpelis2 = išraiška2, ... ;

Tačiau visa „MySQL UPDATE“ sakinio sintaksė atnaujinant vieną lentelę yra tokia:

ATNAUJINTI [ LOW_PRIORITY ] [ IGNORE ] lentelė NUSTATYTI stulpelį1 = reiškinys1, stulpelis2 = išraiška2, ... ] ;

Teiginio UPDATE sintaksė atnaujinant vieną lentelę duomenimis iš kitos MySQL lentelės yra:

ATNAUJINTI lentelę1 NUSTATYTI stulpelį1 = (SELECT išraiška1 FROM table2 WHERE sąlygos) ;

MySQL UPDATE sakinio sintaksė atnaujinant kelias lenteles yra tokia:

ATNAUJINTI lentelę1, lentelę2, ... SET stulpelis1 = išraiška1, stulpelis2 = išraiška2, ... WHERE lentelė1.stulpelis = lentelė2.stulpelis IR sąlygos;

Parametrai arba argumentai

LOW_PRIORITY Neprivaloma. Jei pateikiamas LOW_PRIORITY, atnaujinimas bus atidėtas, kol nebus procesų, nuskaitančių iš stalo. LOW_PRIORITY galima naudoti su MyISAM, MEMORY ir MERGE lentelėmis, kuriose naudojamas užrakinimas lentelės lygiu. Ignoruoti Neprivaloma. Jei pateikiama Ignoruoti, visos naujinimo metu aptiktos klaidos yra ignoruojamos. Jei atnaujinus eilutę būtų pažeistas pirminis raktas arba unikalus indeksas, tos eilutės naujinimas neatliekamas. 1 stulpelis, 2 stulpelis Stulpeliai, kuriuos norite atnaujinti. išraiška1, išraiška2 Naujos reikšmės, kurias reikia priskirti 1 stulpelis, 2 stulpelis. Taigi 1 stulpelis išraiška1, 2 stulpelis būtų priskirta vertė išraiška2, ir taip toliau. KUR sąlygos Neprivaloma. Sąlygos, kurios turi būti įvykdytos, kad atnaujinimas būtų vykdomas. ORDER BY išraiška Neprivaloma. Jis gali būti naudojamas kartu su LIMIT, kad būtų galima tinkamai surūšiuoti įrašus, ribojant atnaujinamų įrašų skaičių. LIMIT number_rows Neprivaloma. Jei pateikiamas LIMIT, jis valdo maksimalų atnaujinamų lentelės įrašų skaičių. Daugiausia įrašų, nurodytų pagal skaičius_eilutės bus atnaujinta lentelėje.

Pavyzdys – atnaujinkite vieną stulpelį

Pažiūrėkime į labai paprastą MySQL UPDATE užklausos pavyzdį.

UPDATE klientai SET last_name = "Anderson" WHERE kliento_id = 5000;

Šis MySQL UPDATE pavyzdys atnaujins pavardėį „Andersoną“. klientų lentelė, kurioje Kliento ID yra 5000.

Pavyzdys – atnaujinkite kelis stulpelius

Pažvelkime į MySQL UPDATE pavyzdį, kuriame galbūt norėsite atnaujinti daugiau nei vieną stulpelį vienu UPDATE sakiniu.

ATNAUJINTI klientų NUSTATYMAS būsena = "Kalifornija", kliento_rep = 32 WHERE kliento_id > 100;

Jei norite atnaujinti kelis stulpelius, tai galite padaryti atskirdami stulpelio/reikšmių poras kableliais.

valstybėį „Kaliforniją“ ir kliento_ats iki 32, kur Kliento ID yra didesnis nei 100.

Pavyzdys – atnaujinkite lentelę su duomenimis iš kitos lentelės

Pažiūrėkime į UPDATE pavyzdį, kuriame parodyta, kaip atnaujinti lentelę su duomenimis iš kitos MySQL lentelės.

ATNAUJINTI klientus
NUSTATYTI miestą = (PASIRINKITE miestą
IŠ tiekėjų
WHERE tiekėjai.tiekėjo_vardas = klientai.kliento_vardas)
WHERE kliento_id > 2000;

Šis UPDATE pavyzdys atnaujintų tik klientų lentelė visiems įrašams, kuriuose Kliento ID yra didesnis nei 2000. Kai tiekėjo_pavadinimas nuo tiekėjų lentelė atitinka Kliento vardas nuo klientų stalas, miestas iš tiekėjų lentelės būtų nukopijuotas į miestas lauke klientų stalo.

Pavyzdys – atnaujinkite kelias lenteles

Pažvelkime į „MySQL UPDATE“ pavyzdį, kuriame galbūt norėsite atlikti atnaujinimą, apimantį daugiau nei vieną lentelę viename UPDATE sakinyje.

ATNAUJINTI klientus, tiekėjus NUSTATYTI klientai.city = tiekėjai.miestas KUR klientai.kliento_id = tiekėjai.tiekėjo_id;

Šis MySQL UPDATE teiginio pavyzdys atnaujins miestas lauke klientų stalą prie miestas nuo tiekėjų lentelė, kurioje Kliento ID atitinka Tiekėjo_id.

Duomenų atnaujinimas duomenų bazėje reiškia esamų lentelės įrašų verčių keitimą. Tokiu atveju galima ir keisti eilučių grupės laukų reikšmes (net ir visas lentelės eilutes), ir redaguoti lauko reikšmę atskiroje eilutėje.

SQL galite pakeisti įrašą duomenų bazės lentelėje naudodami komandą UPDATE. Minimaliausia duomenų atnaujinimo komanda atrodo taip:

ATNAUJINTI lentelė SET laukas = reikšmė

Čia ATNAUJINTI– komanda, nurodanti, kad prašoma atnaujinti duomenis;

stalo– lentelės, kurioje bus atlikti pakeitimai, pavadinimas;

NUSTATYTI– komanda, po kurios rašomi kableliais atskirti laukai su priskirtomis reikšmėmis;

lauke– lentelės laukas, kuriame bus atliktas pakeitimas;

prasmė– nauja reikšmė, kuri bus įvesta į lauką.


Pavyzdžiui, jei reikia nustatyti lauką visose lentelės eilutėse į nulį, galite paleisti šią užklausą:

ATNAUJINTI prekių SET kaina = 0

Tokiu atveju kainos laukas absoliučiai visose galimose lentelės eilutėse įgis 0 reikšmę.

Vienos vertės keitimas

Visų lentelės laukų reikšmių keitimas yra labai retas. Dažniausiai reikia keisti konkretaus įrašo reikšmę. Norėdami tai padaryti, eilutės su komanda UPDATE pabaigoje bus pridėta WHERE direktyva, kuri nurodo sąlygą, kuri nustato, kurioje eilutėje turi būti atlikta atnaujinimo operacija.

Yra lentelė:

Pavyzdžiui, turime atnaujinti produkto savikainą, nurodydami mums žinomą jo vertę num. Norėdami tai padaryti, paleiskite šią užklausą:

ATNAUJINTI prekių RINKINĖ kaina = 150 KUR skaičius = 2

Dabar prieš laukų keitimo operaciją bus pasirinkta eilutė, kuri tenkina sąlygą num = 2. Lentelėje yra tik viena tokia eilutė. Šiame sandėlyje kaina bus pakeista į reikšmę 150. Dėl to gauname lentelę su pasikeitusia prekės kaina.

Kelių eilučių keitimas su pasirinkimo sąlyga

Jei prisimenate visą įvairovę prašyme nurodytos sąlygos, galite įsivaizduoti, kokie įvairūs gali būti pavyzdžiai. Todėl atnaujinimo užklausos gali būti vykdomos arba su viena eilute, arba su eilučių grupe, arba su visomis lentelės eilutėmis. Viskas priklauso nuo užduoties, su kuria susiduriate, taip pat nuo to, kuriose lentelės eilutėse reikia atlikti atnaujinimo operacijas.

Pavyzdžiui, norime perpus sumažinti visų prekių, kurios šiuo metu kainuoja 100 ar daugiau, kainą. Prašymas:

ATNAUJINTI prekių SET kaina = kaina / 2 KUR kaina >= 100

Būklė KURčia yra taisyklė, pagal kurią bus atrenkami tik produktai, kurių kaina lygi 100 arba didesnė, o toms prekėms, kurių kaina mažesnė nei 100, užklausa neturės įtakos.

kaina = kaina / 2– formulė, pagal kurią bus skaičiuojama nauja prekių kaina. Nauja kaina bus parašyta lygi senajai kainai, padalytai iš dviejų.

Vykdydami tokią užklausą gausime lentelę su pakeistais įrašais:

Kelių eilučių laukų verčių atnaujinimas

Jei reikia atnaujinti kelis laukus vienu metu, visi laukai su jų reikšmėmis nurodomi po direktyva SET, atskirti kableliais. Pavyzdžiui, prekės, kurios kodas 2, pavadinimą ir kainą turite pakeisti į „geležis“, kainuojančios 300:

ATNAUJINTI prekės SET title = "geležis" , price = 300 WHERE num = 2 !}

Ši užklausa kiekvienam atitinkančiam laukui iš eilės priskirs savo vertę. O sąlyga nurodys, kurioje eilutėje bus atlikti pakeitimai.


Toliau pateikiami pagrindiniai atnaujinimo operacijų tipai. Remiantis jais, generuojamos užklausos, padedančios išspręsti daugumą duomenų modifikavimo problemų kuriant naudojant SQL.

Jei mums reikia pakeisti ar atnaujinti duomenis MySQL, galime naudoti komandą SQL UPDATE. ,

gramatikos

Toliau pateikiama komanda UPDATE, skirta pakeisti „MySQL Sheet Data“ bendrąją SQL sintaksę:

ATNAUJINTI lentelės_pavadinimą SET1 laukas=nauja-reikšmė1, laukas2=nauja-reikšmė2

  • Vienu metu galite atnaujinti vieną ar daugiau laukų.
  • WHERE sąlygoje galite nurodyti bet kurią sąlygą.
  • Taip pat galite atnaujinti duomenis atskiroje lentelėje.

Kai reikia atnaujinti lentelės eilutėse nurodytus duomenis, labai praverčia INEKE.

Komandinė eilutė duomenims atnaujinti

Žemiau mes atnaujinsime duomenų lentelėje nurodytą w3big_tbl naudodami komandą SQL UPDATE:

pavyzdžių

Toliau pateiktame pavyzdyje duomenų lentelė bus atnaujinta kaip w3big_title w3big_id 3 lauko vertė:

# mysql -u root -p slaptažodis; Įveskite slaptažodį:******* mysql> use w3big; Duomenų bazė pakeista mysql> UPDATE 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> !}

Duomenims atnaujinti naudokite PHP scenarijų

PHP funkcija naudoti mysql_query () vykdyti SQL, galite naudoti SQL UPDATE pareiškimą arba INEKE netaikomas.

Ši funkcija MySQL komandinės eilutės efektas vykdant SQL sakinius yra tas pats.

pavyzdžių

Toliau pateiktame pavyzdyje bus atnaujinti w3big_id duomenys w3big_title 3 lauke.