A Mysql frissítés egy összetett frissítési lekérdezés. Szintaxis FRISSÍTÉS. Példa egy oszlop frissítésére



A cikk tartalma
1. A legegyszerűbb MySQL lekérdezések
2. Egyszerű SELECT lekérdezések
3. Egyszerű INSERT (új bejegyzés) lekérdezések
4. Egyszerű UPDATE (felülírás, hozzáfűzés) lekérdezések
5. Egyszerű DELETE (rekord törlése) lekérdezések
6. Egyszerű DROP (tábla törlése) lekérdezések
7. Összetett MySQL lekérdezések
8. MySQL lekérdezések és PHP változók

1. A legegyszerűbb SQL lekérdezések

1. Megjeleníti az ÖSSZES adatbázis listáját.

SHOW adatbázisok;
2. Felsorolja az ÖSSZES táblát a base_name adatbázisban.

SHOW táblák az alap_névben;

2. Egyszerű SELECT lekérdezések a MySQL adatbázishoz

KIVÁLASZTÁS– egy lekérdezés, amely meglévő adatokat választ ki az adatbázisból. Megadhat konkrét kiválasztási paramétereket a kiválasztáshoz. Például a kérés lényege oroszul így hangzik: SELECT ilyen és ilyen oszlopokat FROM ilyen és olyan táblából WHERE az ilyen és olyan oszlop paramétere megegyezik az értékkel.

1. Kijelöli az ÖSSZES adatot a tbl_name táblában.

SELECT * FROM tbl_name;
2. Megjeleníti a rekordok számát a tbl_name táblában.

SELECT count(*) FROM tbl_name;
3. Kiválaszt (SELECT) a (FROM) tábla tbl_name limit (LIMIT) 3 rekordjából, 2-től kezdve.

SELECT * FROM tbl_name LIMIT 2,3;
4. Kijelöli (SELECT) MINDEN (*) rekordot a (FROM) tbl_name táblából, és sorba rendezi (ORDER BY) az id mező szerint.

SELECT * FROM tbl_name ORDER BY id;
5. Kiválasztja (SELECT) MINDEN rekordot a (FROM) tbl_name táblából, és rendezi őket (ORDER BY) az id mező szerint, FORDÍTOTT sorrendben.

SELECT * FROM tbl_name ORDER BY id DESC;
6. Kiválasztja a ( KIVÁLASZTÁS) ÖSSZES (*) rekord innen: ( TÓL TŐL) táblázatok felhasználókatés szétválogatja őket ( RENDEZÉS) a mezőn id növekvő sorrendben, limit ( HATÁR) az első 5 bejegyzés.

SELECT * FROM felhasználóktól ORDER BY id LIMIT 5;
7. Kijelöli az összes rekordot a táblázatból felhasználókat, hol van a mező fnameértéknek felel meg Gena.

SELECT * FROM felhasználók WHERE fname="Gena";
8. Kijelöli az összes rekordot a táblázatból felhasználókat, ahol a mező értéke fname kezdve Ge.

SELECT * FROM felhasználók WHERE fname LIKE "Ge%";
9. Kijelöli az összes rekordot a táblázatból felhasználókat, Ahol fname végződik na, és a rekordokat növekvő értékrendbe rendezi id.

SELECT * FROM felhasználók WHERE fname LIKE "%na" ORDER BY id;
10. Kijelöli az összes adatot az oszlopokból fname, lname az asztaltól felhasználókat.

SELECT fname, lname FROM userek;

11. Tegyük fel, hogy a felhasználói adatok táblázatában szerepel egy ország. Tehát, ha CSAK az előforduló értékek listáját szeretné megjeleníteni (úgy, hogy például Oroszország ne 20-szor, hanem csak egyszer jelenik meg), akkor a DISTINCT-t használjuk. Kihozza Oroszországot, Ukrajnát, Fehéroroszországot az ismétlődő értékek tömegéből. Így a táblázatból felhasználókat hangszórók ország MINDEN EGYEDI érték kerül kiadásra

SELECT DISTINCT FROM FROM FROM;
12. Kijelöli a táblázat ÖSSZES soradatát felhasználókat Ahol kor 18, 19 és 21 értékei vannak.

SELECT * FROM felhasználóktól, WHERE életkor IN (18,19,21);
13. Kiválasztja a MAXIMÁLIS értéket kor az asztalban felhasználókat. Vagyis ha a legnagyobb érték van a táblázatban kor(angol kortól) 55, akkor a lekérdezés eredménye 55 lesz.

SELECT max(életkor) FROM felhasználók;
14. Válassza ki az adatokat a táblázatból felhasználókat mezők szerint névÉs kor AHOL kor a legkisebb értéket veszi fel.

SELECT név, min(életkor) FROM felhasználóktól;
15. Válassza ki az adatokat a táblázatból felhasználókat a mezőn név AHOL id NEM EGYENLŐ 2-VEL.

SELECT név FROM felhasználók WHERE id!="2";

3. Egyszerű INSERT (új bejegyzés) lekérdezések

BESZÁLLÍTÁS– egy lekérdezés, amely lehetővé teszi egy rekord beszúrását az adatbázisba. Azaz ÚJ rekordot (sort) hoz létre az adatbázisban.

1. Csinál új bejegyzés az asztalban felhasználókat, mezőben név betesz Szergej, és a terepen kor beszúrja a 25-öt. Így egy új sor kerül a táblázatba ezekkel az értékekkel. Ha több oszlop van, akkor a fennmaradó oszlopok vagy üresek maradnak, vagy alapértelmezett értékekkel.

INSERT INTO felhasználók (név, életkor) ÉRTÉKEK ("Sergey", "25");

4. Egyszerű UPDATE lekérdezések a MySQL adatbázisban

FRISSÍTÉS– egy lekérdezés, amely lehetővé teszi mezőértékek FOGLALÁSÁT, vagy hozzáadhat valamit az adatbázis egy már meglévő sorához. Például van egy kész sor, de az életkor paramétert át kell írni benne, mivel az idővel változott.

1. A táblázatban felhasználókat kor 18 lesz.

UPDATE felhasználók SET életkor = "18" WHERE id = "3";
2. Minden ugyanaz, mint az első kérésben, csak a kérés szintaxisát mutatja, ahol két vagy több mezőt felülír.
Az asztalban felhasználókat A WHERE id egyenlő a 3 mező értékével kor betölti a 18. és ország Oroszország.

UPDATE felhasználók SET életkor = "18", ország = "Oroszország" WHERE id = "3";

5. Egyszerű DELETE (rekord törlése) lekérdezések a MySQL adatbázisban

TÖRÖL– olyan lekérdezés, amely egy sort töröl a táblából.

1. Eltávolít egy sort a táblázatból felhasználókat AHOL id egyenlő 10-el.

DELETE FROM felhasználók WHERE id = "10";

6. Egyszerű DROP (tábla törlése) lekérdezések MySQL adatbázisba

CSEPP– táblázatot törölő lekérdezés.

1. Törli a teljes táblázatot tbl_name.

DROP TABLE tbl_name;

7. Összetett lekérdezések a MySQL adatbázishoz

Érdekes lekérdezések, amelyek még a tapasztalt felhasználók számára is hasznosak lehetnek

SELECT azonosító, név, ország FROM felhasználóktól, rendszergazdáktól WHERE TO_DAYS(MOST()) - TO_DAYS(regisztrációs_dátum)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Ez az összetett lekérdezés SELECTS oszlopot KIVÁLASZT azonosító, név, ország TÁBLÁZATOKBAN felhasználók, rendszergazdák AHOL Regisztráció dátuma(dátum) nem régebbi 14 napok I aktiválás NEM EGYENLŐ 0 , Rendezés Regisztráció dátuma fordított sorrendben (először az új).

UPDATE felhasználók SET életkor = "18+" WHERE életkor = (VÁLASSZON életkort FROM felhasználók WHERE férfi = "férfi");
Fentebb egy példa az ún kérésben SQL-ben. Frissítse a felhasználók életkorát 18 év felettire, ahol a nem a férfi. Nem ajánlom az ilyen kérési lehetőségeket. Személyes tapasztalatból azt mondom, hogy jobb több különállót létrehozni - gyorsabban dolgoznak fel.

8. MySQL és PHP adatbázis lekérdezések

A PHP-oldal MySQL-lekérdezéseiben változókat szúrhat be összehasonlított értékekként stb. Pár példa

1. Kijelöli az összes rekordot a táblázatból felhasználókat, hol van a mező fname változó értékének felel meg $név.

SELECT * FROM felhasználók WHERE fname="$name";
2. A táblázatban felhasználókat A WHERE id egyenlő a 3 mező értékével kor az $age változó értékére változik.

UPDATE felhasználók SET age = "$age" WHERE id = "3";

Figyelem! Ha más példa is érdekel, akkor írj egy kérdést a megjegyzésekben!

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 az adatbázisban lévő táblázatban lévő meglévő rekordok frissítésére szolgál MySQL adatok. 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 ez szabályozza a táblázatban frissítendő rekordok maximális számát. 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"-ra 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.

Ez a MySQL oktatóanyag elmagyarázza a MySQL használatát UPDATE nyilatkozat szintaxissal és példákkal.

Szintaxis

A legegyszerűbb formában az UPDATE utasítás szintaxisa egy MySQL-tábla frissítésekor a következő:

FRISSÍTÉS tábla SET oszlop1 = kifejezés1, oszlop2 = kifejezés2, ... ;

Egy tábla frissítésekor azonban a MySQL UPDATE utasítás teljes szintaxisa a következő:

FRISSÍTÉS [ LOW_PRIORITY ] [ IGNORE ] table SET oszlop1 = kifejezés1, oszlop2 = kifejezés2, ... ] ;

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

UPDATE table1 SET oszlop1 = (SELECT kifejezés1 FROM table2 WHERE feltételek) ;

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

UPDATE table1, table2, ... SET oszlop1 = kifejezés1, oszlop2 = kifejezés2, ... WHERE tábla1.oszlop = táblázat2.oszlop ÉS feltételek;

Paraméterek vagy érvek

LOW_PRIORITY Nem kötelező. Ha LOW_PRIORITY van megadva, a frissítés késik mindaddig, amíg nem olvasnak a folyamatok a fájlból asztal. 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 egy elsődleges kulcs vagy egyedi index megsértését eredményezné, akkor az adott sor frissítése nem történik meg. oszlop1, oszlop2 A frissíteni kívánt oszlopok. kifejezés1, kifejezés2 Az új értékek, amelyeket hozzá kell rendelni a oszlop1, oszlop2. Így oszlop1 kifejezés1, oszlop2értékét rendelnék hozzá kifejezés2, stb. WHERE feltételek Nem kötelező. A feltételek, amelyeknek teljesülniük kell a frissítés végrehajtásához. ORDER BY kifejezés Nem kötelező. A LIMIT-tel együtt használható a rekordok megfelelő rendezéséhez, ha korlátozza a frissítendő rekordok számát. LIMIT sorszám Nem kötelező. Ha LIMIT van megadva, akkor ez szabályozza a táblázatban frissítendő rekordok maximális számát. Legfeljebb a által megadott rekordok száma szám_sorok frissítésre kerül a táblázatban.

Példa – Egy oszlop frissítése

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

UPDATE ügyfelek SET last_name = "Anderson" WHERE ügyfélazonosító = 5000;

Ez a MySQL UPDATE példa frissíti a vezetéknév hogy "Anderson" a vásárlók táblázat, ahol a Ügyfél-azonosító az 5000.

Példa - Több oszlop frissítése

Nézzünk egy MySQL UPDATE példát, ahol több oszlopot szeretne frissíteni egyetlen UPDATE utasítással.

UPDATE ügyfelek SET állapot = "Kalifornia", customer_rep = 32 WHERE ügyfélazonosító > 100;

Ha több oszlopot szeretne frissíteni, tudsz ezt úgy teheti meg, hogy az oszlop/érték párokat vesszővel választja el.

állapot"Kaliforniába" és a customer_rep 32-ig ahol a Ügyfél-azonosító nagyobb, mint 100.

Példa – Frissítse a táblát egy másik tábla adataival

Nézzünk egy UPDATE példát, amely bemutatja, hogyan lehet frissíteni egy táblát egy másik MySQL táblából származó adatokkal.

FRISSÍTÉS ügyfeleket
SET city = (Város kiválasztása
beszállítóktól
WHERE beszállítók.szállító_neve = vevők.ügyfélnév)
WHERE ügyfélazonosító > 2000;

Ez az UPDATE példa csak a vásárlók táblázat minden rekordhoz, ahol a Ügyfél-azonosító nagyobb mint 2000. Amikor a Szállító neve tól szállítók táblázat egyezik a Ügyfél neve tól vásárlók asztal, a város a beszállítói táblázatból átmásolnák a város mezőben a vásárlók asztal.

Példa - Több tábla frissítése

Nézzünk egy MySQL UPDATE példát, ahol érdemes lehet olyan frissítést végrehajtani, amely egynél több táblát foglal magában egyetlen UPDATE utasításban.

ügyfelek, beszállítók FRISSÍTÉSE BEÁLLÍTÁSA customers.city = beszállítók.város WHERE ügyfelek.customer_id = beszállítók.szállító_azonosítója;

Ez a MySQL UPDATE utasításpélda frissíti a város mezőben a vásárlók asztalhoz a város tól szállítók táblázat, ahol a Ügyfél-azonosító egyezik a beszállítói_azonosító.

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 az adattáblázatban megadott w3big_tbl segítségével frissítjük SQL parancsok INEKE FRISSÍTÉSE:

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 a mysql_query() használatához a végrehajtáshoz SQL utasítások, használhatja az UPDATE SQL utasítást, különben az INEKE nem vonatkozik rá.

Ez a funkció a MySQL-ben> parancs sor 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.

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 kliens 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, következő kijelenté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 egy oszlop értékét bármilyen értékre állítja be, 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() függvény szoftver interfész VAL VEL 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ő ö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.
Egy megjegyzésben!

  • 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 azok valójában nem voltak frissítve. 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 az InnoDB motort biztosítja a számára automatikus frissítés kapcsolódó táblázatok.


Top