tévék. Konzolok. Projektorok és tartozékok. Technológiák. Digitális TV

Mysql frissítés a sorok száma frissítve. A MySQL lekérdezések FRISSÍTÉSE. Példa több oszlop frissítésére

Ebben az oktatóanyagban megtudhatja, hogyan kell használni MySQL UPDATE utasítás szintaxissal és példákkal.

Leírás

MySQL UPDATE utasítás a MySQL adatbázis táblájában lévő meglévő rekordok frissítésére szolgál. Az UPDATE utasításnak három szintaxisa van, attól függően, hogy milyen típusú frissítést szeretne végrehajtani.

Szintaxis

Egy egyszerű szintaxis az UPDATE utasításhoz egyetlen tábla frissítésekor a MySQL-ben:

Mostantól a MySQL UPDATE utasítás teljes szintaxisa egyetlen tábla frissítésekor a következő:

VAGY
Az UPDATE utasítás szintaxisa, amikor egy táblát egy másik tábla adataival frissít a MySQL-ben:

VAGY
Az UPDATE utasítás MySQL szintaxisa több tábla frissítésekor a következő:

Paraméterek vagy érvek

LOW_PRIORITY – nem kötelező. Ha LOW_PRIORITY van megadva, a frissítés addig késik, amíg nem olvasnak le folyamatok a táblából. A LOW_PRIORITY használható MyISAM, MEMORY és MERGE táblákkal, amelyek táblaszintű zárolást használnak.
FIGYELMEZTETÉS – opcionális. Ha megadja az IGNORE beállítást, a frissítés során észlelt összes hibát figyelmen kívül hagyja. Ha egy sor frissítése sértené az elsődleges kulcsot vagy az egyedi indexet, akkor az adott sor frissítése sikertelen lesz.
oszlop1, oszlop2 a frissíteni kívánt oszlopok.
kifejezés1 , kifejezés2 — új értékek oszlop1 , oszlop2 hozzárendeléséhez. Tehát az 1. oszlophoz a kifejezés1 értéke, a 2. oszlophoz a kifejezés2 értéke, és így tovább.
WHERE feltételek – nem kötelező. Feltételek, amelyeknek teljesülniük kell a frissítéshez.
ORDER BY kifejezés – nem kötelező. A LIMIT-tel együtt használható a rekordok megfelelő rendezéséhez, miközben korlátozza a frissítendő rekordok számát.
LIMIT sorszám – nem kötelező. Ha LIMIT van megadva, akkor a táblázatban frissítendő rekordok maximális számát szabályozza. A number_rows fájlban megadott rekordok maximális száma frissül a táblázatban.

Példa egy oszlop frissítésére

Nézzünk egy nagyon egyszerű példát egy MySQL UPDATE lekérdezésre.

Ebben a MySQL-példában az UPDATE a last_name mezőt „Ford” értékre frissítette az ügyfelek táblájában, ahol ügyfélazonosító = 500.

Példa több oszlop frissítésére

Nézzük a MySQL UPDATE példát, ahol több oszlopot is frissíthet egyetlen UPDATE utasítással.

Ha több oszlopot szeretne frissíteni, ezt úgy teheti meg, hogy az oszlop/érték párokat vesszővel választja el.
Ez a példa MySQL UPDATE utasítás állapotát „Nevada” értékre, a customer_rep értéket pedig 23-ra frissítette, ahol a customer_id nagyobb, mint 200.

Példa egy tábla frissítésére egy másik tábla adataival

Nézzük meg az UPDATE példát, amely bemutatja, hogyan frissíthetünk egy táblát egy másik MySQL-táblázat adataival.

MySQL

Ez a FRISSÍTÉS példa csak az ügyfelek tábláját frissíti minden olyan rekordnál, ahol a vevő_azonosítója nagyobb, mint 5000. Ha a beszállítói tábla beszállítói_neve megegyezik a vevőtáblában szereplő vevőnévvel, a beszállítói tábla városa az ügyfelek tábla város mezőjébe másolódik.

Ha adatokat kell módosítanunk vagy frissítenünk a MySQL-ben, akkor az SQL UPDATE parancsot használhatjuk. ,

nyelvtan

A következő az UPDATE parancs a MySQL Sheet Data általános SQL szintaxisának megváltoztatásához:

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 parancssori hatása az SQL utasítások végrehajtására ugyanaz.

példák

A következő példa frissíti a w3big_id adatokat a w3big_title 3 mezőben.

Mi az a DELETE kulcsszó?

Az SQL DELETE parancs a már nem szükséges sorok törlésére szolgál az adatbázistáblákból. Törli az egész sort a táblázatból. A Delete parancs hasznos lehet ideiglenes vagy elavult adatok törléséhez az adatbázisból. A DELETE paranccsal egynél több sort törölhet a táblából egyetlen lekérdezés során. Ez előnyösnek bizonyul, ha nagy számú sort távolítunk el egy adatbázistáblából.

Ha egy sort törölt, azt nem lehet visszaállítani. Ezért erősen ajánlott az adatbázis biztonsági mentése, mielőtt bármilyen adatot törölne az adatbázisból. Ez lehetővé teszi az adatbázis visszaállítását és az adatok későbbi megtekintését, ha szükséges.

Törölje a parancs szintaxisát

A delete parancs alapvető szintaxisa az alábbiak szerint látható.

  • A DELETE FROM `tábla_neve` utasítja a MySQL szervert, hogy távolítsa el a sorokat a táblából.
  • opcionális, és egy szűrő elhelyezésére szolgál, amely korlátozza a DELETE lekérdezés által érintett sorok számát.

Ha a DELETE lekérdezésben nem használja a WHERE záradékot, akkor egy adott tábla összes sora törlődik. Mielőtt a DELETE parancs részletesebb tárgyalásába kezdenénk, illesszünk be néhány mintaadatot a movies táblába, amellyel dolgozni szeretnénk.

INSERT INTO `filmek` (`cím`, `rendező`, `kiadási_év, `kategória_azonosítója`) ÉRTÉKEK ("The Great Dictator", "Chalie Chaplie", 1920, 7); INSERT INTO `filmek` (`cím`, `rendező`, `kategória_azonosítója`) VALUES ("mintafilm", "Anonymous", 8); INSERT INTO filmek ("cím", "rendező", "év_megjelenése", "kategória_azonosítója") ÉRTÉKEK ("3. film", "John Brown", 1920, 8);

A fenti forgatókönyv végrehajtása három (3) filmet ad a filmek táblázatához. Mielőtt továbbmennénk a leckénkbe, nézzük meg az összes filmet a táblázatunkban. Az alábbi forgatókönyv ezt teszi.

SELECT * FROM `filmek`;

film_iditleigazgatóév_megjelentkategória_azonosítója
1 A Karib-tenger kalózai 4Rob Marshall2011 1
2 Sarah Marshal elfelejtéseNicholas Stoller2008 2
3 X-MenNULL2008 NULL
4 Kód Név FeketeEdgar Jimz2010 NULL
5 Apa kislányaiNULL2007 8
6 Angyalok és démonokNULL2007 6
7 Davinci kódNULL2007 6
9 MézesholdasokSchultz János2005 8
16 67% bűnösNULL2012 NULL
18 A Nagy DiktátorChalie Chaplie1920 7
19 mintafilmNévtelenNULL8
20 film 3John Brown1920 8

Tegyük fel, hogy a Myflix videokönyvtár nem kívánja tovább bérbe adni a "The Great Dictator"-t a tagjainak, és el akarják távolítani az adatbázisból. Filmazonosítója 18, az alábbi forgatókönyv segítségével törölhetjük a sorát a filmek asztaláról.

A fenti szkript végrehajtása a MySQL WorkBenchben a Myflix ellen törli a 18-as azonosítójú filmet az adatbázistáblából.

Lássuk a filmek aktuális állapotát.

SELECT * FROM `filmek`;

film_idcímigazgatóév_megjelentkategória_azonosítója
1 A Karib-tenger kalózai 4Rob Marshall2011 1
2 Sarah Marshal elfelejtéseNicholas Stoller2008 2
3 X-MenNULL2008 NULL
4 Kód Név FeketeEdgar Jimz2010 NULL
5 Apa kislányaiNULL2007 8
6 Angyalok és démonokNULL2007 6
7 Davinci kódNULL2007 6
9 MézesholdasokSchultz János2005 8
16 67% bűnösNULL2012 NULL
19 mintafilmNévtelenNULL8
20 film 3John Brown1920 8
  • a 18-as azonosítójú film nem került vissza a lekérdezés eredménykészletében.
  • egy táblázat egyetlen oszlopát sem törölheti. Egy teljes sort törölhet.

Tegyük fel, hogy van egy listánk azokról a filmekről, amelyeket törölni szeretnénk . Használhatjuk a WHERE záradékot az IN mellett.

A fenti forgatókönyv végrehajtása törli a 20-as és 21-es azonosítójú filmeket a filmtáblázatunkból.

MI A FRISSÍTÉSI PARANCS?

A Frissítés parancs a táblázat sorainak módosítására szolgál. A frissítési paranccsal egy vagy több mezőt lehet egyszerre frissíteni. Használható arra is, hogy frissítsen egy táblázatot egy másik tábla értékeivel.

Frissítse a parancs szintaxisát

Az SQL Update parancs alapvető szintaxisa az alábbiak szerint látható.

  • UPDATE A "tábla_neve" az a parancs, amely a MySQL-nek utasítja a tábla adatainak frissítését.
  • SET `oszlop_neve` = `új_érték' a frissítési lekérdezés által érintett mezők nevei és értékei. Megjegyzés: a frissítési értékek beállításakor a karakterláncok adattípusait idézőjelben kell megadni. A numerikus értékeket nem kell megadni. hogy idézőjelbe kerüljön, a dátum adattípusának egyszeres idézőjelben kell lennie, és formátumban: „ÉÉÉÉ-HH-NN”.
  • opcionális, és egy szűrő elhelyezésére használható, amely korlátozza az UPDATE lekérdezés által érintett sorok számát.

Nézzünk most egy gyakorlati példát, amely frissíti a tagtáblázat adatait. Tegyük fel, hogy tagunk 1-es és 2-es tagsági számainál a következő frissítéseket kell elvégezni.

Tagsági szám Frissítések szükségesek
1 A telefonszám 999-ről 0759 253 532-re módosult
2 Módosítsa a nevet Janet Smith Jones-ra, a fizikai címet pedig Melrose 123-ra kell módosítani

Kezdjük az 1-es számú tagság frissítésével, mielőtt bármilyen frissítést végzünk az adatainkban, lekérjük az 1-es tagsági rekordot. Az alább látható szkript segít ebben.

A fenti szkript végrehajtása a következő eredményeket adja.

tagsági_számteljes_neveknemeszületési_dátumfizikai_címpostai_címkapcsolati_számemail
1 Janet JonesNői21-07-1980 Első utca 4. számú telekPrivát táska999

Frissítsük most a telefonszámot az alábbi szkript segítségével.

A fenti szkript végrehajtása a 999-ről 0759 253 532-re frissíti az 1-es tagsági szám kapcsolati számát. A frissítési szkript végrehajtása után nézzük meg az 1-es tagság rekordját.

A fenti szkript végrehajtása a következő eredményeket adja.

tagsági_számteljes_neveknemeszületési_dátumfizikai_címpostai_címkapcsolati_számemail
1 Janet JonesNői21-07-1980 Első utca 4. számú telekPrivát táska0759 253 542 Ez az e-mail cím a spamrobotok elleni védelem alatt áll. A megtekintéséhez engedélyezni kell a JavaScriptet.

Nézzük most a 2-es számú tagsághoz szükséges frissítéseket.

tagsági_számteljes_neveknemeszületési_dátumfizikai_címpostai_címkapcsolati_számemail
2 Smith JonesNői23-06-1980 Park StreetNULLNULLEz az e-mail cím a spamrobotok elleni védelem alatt áll. A megtekintéséhez engedélyezni kell a JavaScriptet.

A következő szkript segít nekünk ebben.

A fenti szkript végrehajtása frissíti a 2-es tagság teljes nevét Janet Smith Jones-ra, a fizikai címet pedig a Melrose 123-ra.

tagsági_számteljes_neveknemeszületési_dátumfizikai_címpostai_címkapcsolati_számemail
2 Janet Smith JonesNői23-06-1980 Melrose 123NULLNULLEz az e-mail cím a spamrobotok elleni védelem alatt áll. A megtekintéséhez engedélyezni kell a JavaScriptet.

Összegzés

  • A delete parancs a már nem szükséges adatok eltávolítására szolgál egy táblából.
  • A "WHERE záradék" a DELETE lekérdezés által érintett sorok számának korlátozására szolgál.
  • Az adatok törlése után nem állíthatók vissza, ezért erősen ajánlott biztonsági másolat készítése az adatok törlése előtt.
  • Az update parancs a meglévő adatok módosítására szolgál.
  • A "WHERE záradék" az UPDATE lekérdezés által érintett sorok számának korlátozására szolgál.

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 az határozza meg, 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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ő összekapcsolást mutat be a vessző operátor használatával, de a többtáblás UPDATE bármilyen típusú, a SELECT utasításban engedélyezett összekapcsolást használhat, például a LEFT JOIN-t.
Jegyzet!

  • Az ORDER BY vagy a LIMIT nem használható többtáblás UPDATE utasításokban.
A MySQL 4.0.18 előtt szükség volt UPDATE jogosultságra a többtáblás UPDATE-ben használt összes táblán, még akkor is, ha ténylegesen nem frissültek. A MySQL 4.0.18-tól kezdve az olyan tábláknak, amelyek oszlopait csak olvassák, de nem frissítik, csak SELECT jogosultsággal kell rendelkezniük.
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 biztosítja az InnoDB mechanizmusát a kapcsolódó táblák automatikus frissítéséhez.

Kapcsolódó kiadványok