Az UPDATE utasítás frissíti az oszlopokat az új értékekkel egy meglévő táblázat soraiban. A SET utasítás megadja, hogy mely oszlopokat kell módosítani, és milyen értékeket kell beállítani bennük. A WHERE záradék, ha van, meghatározza, hogy mely sorok kerülnek frissítésre. Ellenkező esetben az összes sor frissül. Ha ORDER BY kifejezés van megadva, akkor a sorok az abban megadott sorrendben frissülnek.
Ha a LOW_PRIORITY kulcsszó meg van adva, akkor az UPDATE parancs végrehajtása késik, amíg a többi kliens be nem fejezi a táblázat beolvasását.
Ha az IGNORE kulcsszó van megadva, a frissítési parancs akkor sem szakad meg, ha a frissítés duplikált kulcshibát észlel. Az ütközést okozó sorok nem frissülnek.
Ha egy oszlopot a megadott kifejezésből ér el a tbl_name argumentum, akkor az UPDATE parancs az adott oszlop aktuális értékét használja. Például a következő parancs az életkor oszlopot az aktuális értékénél eggyel nagyobb értékre állítja be:
Mysql> UPDATE persondata SET age=age+1;
Az UPDATE parancs balról jobbra rendeli az értékeket. Például a következő parancs megkettőzi az életkor oszlopot, majd növeli azt:
Mysql> UPDATE persondata SET age=age*2, age=age+1;
Ha egy oszlop az aktuális értékre van állítva, akkor a MySQL ezt észleli, és nem frissíti.
Az UPDATE parancs a ténylegesen módosított sorok számát adja vissza. IN MySQL verziók A 3.22-es és újabb verziókban a C API mysql_info() függvény a talált és frissített sorok számát, valamint az UPDATE végrehajtásakor előforduló figyelmeztetések számát adja vissza.
A MySQL 3.23-as verziójában a LIMIT # használatával biztosíthatja, hogy csak a megadott számú sor kerüljön módosításra.
UPDATE szintaxis
Egytáblás szintaxis:
FRISSÍTÉS shya_tabletsh
KÉSZLET oszlop_név1=kifejezés1 [, Név_ oszlop2=kifejezés2...]
Többtáblás szintaxis:
UPDATE table_name [, table_name...] SET oszlopnév 1=kifejezés1 [,oszlop_neve2=kifejezés2...]
Az UPDATE utasítás új értékekkel frissíti a meglévő táblázatsorok oszlopait. A SET záradék felsorolja a módosítandó oszlopokat és a hozzájuk rendelendő értékeket. Ha a WHERE záradék meg van adva, akkor ez meghatározza, hogy mely sorokat kell frissíteni. Ellenkező esetben a táblázat összes sora frissül. Ha az ORDER BY záradékot adjuk meg, a sorok a megadott sorrendben frissülnek. A LIMIT konstrukció korlátozza a frissítendő sorok számát.
Az UPDATE utasítás a következő módosítókat támogatja:
- Ha a LOW_PRIORITY kulcsszó van megadva, az UPDATE késik, amíg az összes többi ügyfél be nem olvassa a táblázatot.
- Ha az IGNORE kulcsszó meg van adva, a frissítési művelet akkor sem sikerül, ha ismétlődő kulcshibák fordulnak elő. Az ütközést okozó sorok nem frissülnek.
Ha táblázatból származó oszlopokat használ táblázat_neve a kifejezésekben az UPDATE az oszlopok aktuális értékét használja. Például a következő utasítás eggyel növeli az életkor oszlopot:
mysql> UPDATE persondata SET age=age+l;
A hozzárendelések az UPDATE-ben balról jobbra történnek. Például a következő utasítás megduplázza az életkor oszlop értékét, majd eggyel növeli: mysql> személyi adatok FRISSÍTÉSE BEÁLLÍTÁS: életkor=életkor*2, életkor=életkor+l;
Ha beállítja egy oszlop értékét arra, ami az, a MySQL észleli ezt, és nem frissíti.
Ha egy NEM nullává nyilvánított oszlopot NULL-ra frissít, akkor az az adott adattípusnak megfelelő alapértelmezett értékre lesz állítva, és eggyel növeli a figyelmeztetésszámlálót. Az alapértelmezett érték 0 a numerikus oszlopoknál, az üres karakterlánc ("") a karakteres oszlopoknál, és "null" a dátum és idő oszlopoknál.
Az UPDATE a ténylegesen frissített sorok számát adja vissza. A MySQL 3.22 és újabb verzióiban a mysql_info() C API függvény API visszaadja a lekérdezésnek megfelelő és frissített sorok számát, valamint a FRISSÍTÉS során előforduló figyelmeztetések számát.
A MySQL 3.23-tól kezdve használhatja a limitet sorok_száma az UPDATE hatókörének korlátozásához.
A LIMIT konstrukció a következőképpen működik:
- A MySQL 4.0.13 előtt a LIMIT korlátozta a feldolgozott sorok számát. Az operátor a frissítés után azonnal kilépett sorok_száma sorok, amelyek megfeleltek a WHERE feltételnek.
- A MySQL 4.0.13 óta a limit a karakterlánc-illesztési korlát. A kezelő azonnal kilép, amint megtalálja sorok_száma sorok, amelyek megfelelnek a WHERE feltételnek, függetlenül attól, hogy valóban frissítették-e.
Ha az UPDATE utasítás záradék szerinti sorrendet tartalmaz, akkor a sorok az ebben a záradékban meghatározott sorrendben frissülnek. Az ORDER BY a MySQL 4.0.0-tól kezdve használható.
A MySQL 4.0.0 óta lehetőség van olyan UPDATE műveletek végrehajtására is, amelyek egyszerre több táblán működnek:
UPDATE tételek,hónap SET items.price=hónap.ár WHERE tételek.id-hónap. id/ Ez a példa egy belső összeillesztést mutat be vessző operátor használatával, de a többtáblás UPDATE bármilyen csatlakozási típust használhat SELECT utasítás, például LEFT JOIN.
Jegyzet!
- Az ORDER BY vagy a LIMIT nem használható többtáblás UPDATE utasításokban.
Ha többtáblás UPDATE utasítást használ olyan InnoDB-táblákon, amelyekben idegenkulcs-megszorítások vannak megadva, a MySQL-optimalizáló a szülő-utód kapcsolatok által meghatározott sorrendtől eltérő sorrendben dolgozhatja fel azokat. Ebben az esetben a nyilatkozat meghiúsul, és a tranzakció visszaáll. Ehelyett frissítsen egyetlen táblát, és hagyatkozzon az ON UPDATE tulajdonságra, amely az InnoDB motort biztosítja automatikus frissítés kapcsolódó táblázatok.
UPDATE parancs- már módosítja meglévő rekordot vagy több rekordban egy táblázatban SQL. Módosítja a meglévő értékeket egy táblázatban vagy a nézet főtáblájában.
UPDATE Command Command Syntax
UPDATE parancs szintaxisa
UPDATE parancs. Alapvető kulcsszavakatés UPDATE parancs paraméterei
- séma - engedélyazonosító, általában megegyezik valamilyen felhasználónévvel
- táblázat nézet - táblázat neve SQL, amelyben az adatok megváltoznak; ha egy nézet definiálva van, az adatok a főtáblában módosulnak SQL beadványok
- allekérdezés_1 – részlekérdezés, amelyet a szerver ugyanúgy kezel, mint egy nézetet
- Veloszlop - táblázat oszlopa SQL vagy beadványok SQL, amelynek értéke megváltozik; ha a táblázat oszlopa mondatból van KÉSZLET kimarad, az oszlop értéke változatlan marad
- expr - ; ez a kifejezés tartalmazhat fő változókat és opcionális indikátorváltozókat
- részlekérdezés_2 - új értéket rendel a megfelelő oszlophoz
- részlekérdezés_3 - új értéket rendel a megfelelő oszlophoz
AHOL- meghatározza azon sorok tartományát, amelyeket azokkal módosítani kell, amelyekre adott feltétel vonatkozik IGAZ; ha ez a kifejezés kimarad, a táblázat vagy nézet összes sora módosul.
A jóváhagyás kiadásakor bármely UPDATE trigger, meghatározva a táblázatban.
Allekérdezések. Ha az ajánlat KÉSZLET tartalmaz részlekérdezés, pontosan egy sort ad vissza minden egyes módosított sorhoz. Az allekérdezés eredményének minden értéke a megfelelő listaoszlopokhoz van hozzárendelve zárójelben. Ha az allekérdezés nem ad vissza egyetlen sort sem, akkor az oszlop hozzá van rendelve NULL. Allekérdezések adatokat választhat ki a módosított táblából. Ajánlat KÉSZLET kombinálni tudja a kifejezéseket és részlekérdezések.
UPDATE parancs 1. példa
Az összes vásárló értékelésének módosítása 200-ra egyenlő értékre:
Ügyfelek KÉSZLETértékelés = 200;
UPDATE parancs 2. példa
Általában ritkán használják az oszlopértékek cseréjét a táblázat összes sorában. Ezért a csapatban, mint a csapatban TÖRÖL, használhat állítmányt. Az értékelési oszlop értékeinek meghatározott cseréjének végrehajtásához az összes Giovanni eladó által kiszolgált ügyfélnél (snum = 1003) be kell írnia:
Ügyfelek KÉSZLETértékelés = 200 WHERE snum = 1001;
SQL UPDATE parancs 3. példa
Egy mondatban KÉSZLET Az oszlopokhoz tetszőleges számú értéket megadhat, vesszővel elválasztva:
Emp KÉSZLET job = 'MANAGER', sal = sal + 1000, deptno = 20 WHERE ename = 'JONES';
UPDATE parancs 4. példa
Egy mondatban KÉSZLET megadhat NULL értéket speciális szintaxis (például IS NULL) használata nélkül. Így ha az összes vásárlói értékelést Londonból (város = 'London') NULL-ra szeretné állítani, akkor a következőket kell beírnia:
Ügyfelek KÉSZLETértékelés = NULL WHERE város = 'London';
UPDATE parancs 5. példa
Elmagyarázza a következő parancs szintaxis használatát:
- Mindkét mondatforma KÉSZLET együtt egy nyilatkozatban.
- Allekérdezés.
- Egy WHERE záradék, amely korlátozza a módosítható sorok tartományát.
Emp a KÉSZLET deptno =
(KIVÁLASZTÁS deptno FROM dept WHERE loc = 'BOSTON'), (sal, comm) = ( KIVÁLASZTÁS 1.1*AVG(sal), 1.5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN ( KIVÁLASZTÁS deptno FROM dept WHERE loc = 'DALLAS' OR loc = 'DETROIT');
A fenti nyilatkozat a következőket teszi:
- Csak azokat az alkalmazottakat módosítja, akik Dallasban vagy Detroitban dolgoznak
- Beállítja a deptno oszlop értékét a bostoni alkalmazottak számára
- Minden alkalmazott fizetését a teljes osztály átlagkeresetének 1,1-szeresében határozza meg
- Minden alkalmazott jutalékát a teljes osztály átlagos jutalékának 1,5-szeresében határozza meg
Ha adatokat kell módosítanunk vagy frissítenünk a MySQL-ben, akkor az SQL UPDATE parancsot használhatjuk. ,
nyelvtan
Az alábbiakban található az UPDATE parancs, amelyet módosítani kell MySQL adatok Lapadatok Általános SQL szintaxis:
FRISSÍTÉS tábla_neve SET mező1=új-érték1, mező2=új-érték2
- Egy vagy több mezőt egyszerre frissíthet.
- A WHERE záradékban bármilyen feltételt megadhat.
- Az adatokat külön táblázatban is frissítheti.
Ha frissíteni kell a táblázat soraiban megadott adatokat, az INEKE nagyon hasznos.
Parancssor az adatok frissítéséhez
Az alábbiakban frissítjük az adattáblázatban megadott w3big_tbl-t az SQL UPDATE paranccsal:
példák
A következő példa az adattáblázatot w3big_title w3big_id 3 mezőértékként frissíti:
# mysql -u root -p jelszó; Írja be a jelszót:******* mysql> use w3big; Adatbázis megváltozott mysql> UPDATE w3big_tbl -> SET w3big_title="JAVA tanulása" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}Használjon PHP szkriptet az adatok frissítéséhez
PHP függvény használata mysql_query() SQL utasítások végrehajtásához, használhatja az SQL UPDATE utasítást, vagy az INEKE nem vonatkozik.
Ez a funkció a MySQL>-ben parancssor az SQL utasítások végrehajtásának hatása ugyanaz.
példák
A következő példa frissíti a w3big_id adatokat a w3big_title 3 mezőben.