Aktualizace Mysql je složitý aktualizační dotaz. AKTUALIZACE dotazů MySQL



Obsah článku
1. Nejjednodušší MySQL dotazy
2. Jednoduché SELECT dotazy
3. Jednoduché dotazy INSERT (nový záznam).
4. Jednoduché UPDATE (přepsat, připojit) dotazy
5. Jednoduché požadavky DELETE (smazání záznamu).
6. Jednoduché DROP (smazat tabulku) dotazy
7. Složité MySQL dotazy
8. MySQL dotazy a PHP proměnné

1. Nejjednodušší SQL dotazy

1. Vypíše VŠECHNY báze.

SHOW databáze;
2. Vypíše VŠECHNY tabulky v databázi základní_název.

SHOW tabulky v base_name;

2. Jednoduché SELECT (výběr) dotazy do databáze MySQL

VYBRAT- dotaz, který vybere již existující data z databáze. Pro výběr můžete zadat určité možnosti výběru. Například podstata požadavku v ruštině zní takto - VYBERTE takové a takové sloupce FROM takové a takové tabulky WHERE se parametr toho a takového sloupce rovná hodnotě.

1. Vybere VŠECHNA data v tabulce tbl_name.

SELECT * FROM název_tbl;
2. Zobrazí počet záznamů v tabulce tbl_name.

SELECT pocet(*) FROM jmeno_tbl;
3. Vybere (SELECT) z tabulky (FROM) tbl_name limit (LIMIT) 3 záznamy, počínaje 2.

SELECT * FROM název_tbl LIMIT 2,3;
4. Vybere (SELECT) VŠECHNY (*) záznamy z (FROM) tabulky tbl_name a seřadí je (ORDER BY) podle pole id v pořadí.

SELECT * FROM tbl_name ORDER BY id;
5. Vybere (SELECT) VŠECHNY záznamy z (FROM) tabulky tbl_name a seřadí je (ORDER BY) podle pole id v REVERSE pořadí.

SELECT * FROM tbl_name ORDER BY id DESC;
6. Vybírá ( VYBRAT) VŠECHNY (*) záznamy z ( Z) tabulky uživatelů a třídit je ( SEŘADIT PODLE) na poli id ve vzestupném pořadí, limit ( OMEZIT) prvních 5 záznamů.

SELECT * FROM users ORDER BY ID LIMIT 5;
7. Vybere všechny záznamy z tabulky uživatelů, kde pole jméno odpovídá hodnotě Gena.

SELECT * FROM uživatelů WHERE fname="Gena";
8. Vybere všechny záznamy z tabulky uživatelů, kde je hodnota pole jméno začít s Ge.

SELECT * FROM users WHERE fname LIKE "Ge%";
9. Vybere všechny záznamy z tabulky uživatelů, kde jméno končí s na a seřadí položky ve vzestupném pořadí podle hodnoty id.

SELECT * FROM users WHERE fname LIKE "%na" ORDER BY id;
10. Vybere všechna data ze sloupců jméno, jméno od stolu uživatelů.

SELECT fname, lname FROM uživatelů;

11. Řekněme, že máte v tabulce uživatelských dat zemi. Pokud tedy chcete zobrazit POUZE seznam vyskytujících se hodnot (aby se například Rusko nezobrazovalo 20krát, ale pouze jednou), použijte DISTINCT. Z množství opakujících se hodnot bude vyvozovat Rusko, Ukrajina, Bělorusko. Takže od stolu uživatelů sloupců země Zobrazí se VŠECHNY UNIKÁTNÍ hodnoty

SELECT DISTINCT country FROM uživatelů;
12. Vybere VŠECHNA data řádku z tabulky uživatelů kde stáří má hodnoty 18,19 a 21.

SELECT * FROM uživatelů WHERE age IN (18,19,21);
13. Vybere MAXIMÁLNÍ hodnotu stáří ve stole uživatelů. Tedy pokud máte v tabulce nejvyšší hodnotu stáří(z anglického věku) je 55, pak výsledek dotazu bude 55.

SELECT max(věk) FROM uživatelů;
14. Vyberte data z tabulky uživatelů podle polí název A stáří KDE stáří nabývá nejmenší hodnoty.

SELECT jméno, min(věk) FROM uživatelů;
15. Vyberte data z tabulky uživatelů na poli název KDE id NENÍ ROVNO 2.

SELECT jméno FROM uživatelů WHERE id!="2";

3. Jednoduché dotazy INSERT (nový záznam).

VLOŽIT– dotaz, který umožňuje POČÁTEČNĚ vložit záznam do databáze. To znamená, že vytvoří NOVÝ záznam (řádek) v databázi.

1. ano nový rekord ve stole uživatelů, v terénu název vloží Sergeje a v poli stáří vloží 25. Do tabulky se tak přidá nový řádek s danými hodnotami. Pokud je sloupců více, pak zbývající zůstanou buď prázdné, nebo s výchozími hodnotami.

INSERT INTO uživatelé (jméno, věk) VALUES ("Sergey", "25");

4. Jednoduché UPDATE dotazy na databázi MySQL

AKTUALIZACE- dotaz, který vám umožní PŘEPÍŠET hodnoty polí nebo PŘIDAT něco do již existujícího řádku v databázi. Existuje například hotový řetězec, ale je třeba v něm přepsat parametr stáří, protože se časem měnil.

1. Tabulka uživatelů stáří se stává 18.

AKTUALIZACE uživatelů SET věk = "18" WHERE id = "3";
2. Vše je stejné jako v prvním požadavku, jen ukazuje syntaxi požadavku, kde jsou přepsána dvě nebo více polí.
Stůl uživatelů WHERE id je hodnota 3 pole stáří stává 18 a země Rusko.

AKTUALIZACE uživatelů SET věk = "18", země = "Rusko" WHERE id = "3";

5. Jednoduché DELETE (odstranění záznamu) dotazy na databázi MySQL

VYMAZAT je dotaz, který odstraní řádek z tabulky.

1. Odebere řádek z tabulky uživatelů KDE id rovná se 10.

DELETE FROM users WHERE id = "10";

6. Jednoduché DROP (delete table) dotazy do databáze MySQL

UPUSTIT je dotaz, který odstraní tabulku.

1. Smaže celou tabulku název_tbl.

DROP TABLE název_tbl;

7. Komplexní databázové dotazy MySQL

Zajímavé dotazy, které mohou používat i zkušení uživatelé

SELECT id,name,country FROM users,admins WHERE TO_DAYS(NOW()) - TO_DAYS(registration_date)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Tento složitý dotaz VYBERE sloupce id, jméno, země V TABULKÁCH uživatelé, administrátoři KDE datum registrace(datum) ne starší než 14 dny a aktivace NENÍ ROVNO 0 , Seřazeno podle datum registrace v opačném pořadí (nové na začátku).

AKTUALIZACE uživatelů SET věk = "18+" WHERE věk = (VYBRAT věk FROM uživatelů WHERE muž = "muž");
Výše uvedené je příkladem tzv dotaz v dotazu v SQL. Aktualizujte věk mezi uživateli na 18+, kde je pohlaví muž. Tento typ požadavku nedoporučuji. Z vlastní zkušenosti řeknu, že je lepší vytvořit několik samostatných - budou rychleji vypracovány.

8. Databázové dotazy MySQL a PHP

V dotazech MySQL na stránce PHP můžete vkládat proměnné jako porovnávací hodnoty a tak dále. Pár příkladů

1. Vybere všechny záznamy z tabulky uživatelů, kde pole jméno odpovídá hodnotě proměnné $jméno.

SELECT * FROM uživatelů WHERE fname="$name";
2. Tabulka uživatelů WHERE id je hodnota 3 pole stáří se změní na hodnotu proměnné $věk.

AKTUALIZACE uživatelů SET věk = "$věk" WHERE id = "3";

Pozornost! Pokud vás zajímá nějaký jiný příklad, napište dotaz do komentářů!

AKTUALIZOVAT syntaxi

Syntaxe jedné tabulky:
AKTUALIZACE shya_tabletsh
SOUBOR název_sloupce1=výraz1 [, název_ sloupec2=výraz2 ...]


Syntaxe více tabulek:

UPDATE název_tabulky [, název_tabulky...] SET název_sloupce 1=výraz1 [,název_sloupce2=výraz2...]
Příkaz UPDATE aktualizuje sloupce existujících řádků tabulky novými hodnotami. Konstrukce SET uvádí sloupce, které mají být upraveny, a hodnoty, které jim mají být přiřazeny. Pokud je zadána klauzule WHERE, určuje, které řádky by se měly aktualizovat. Jinak se aktualizují všechny řádky tabulky. Pokud je uvedena klauzule ORDER BY, budou řádky aktualizovány v daném pořadí. Konstrukce LIMIT ukládá omezení počtu řádků, které mají být aktualizovány.
Příkaz UPDATE podporuje následující modifikátory:

  1. Pokud je zadáno klíčové slovo LOW_PRIORITY, provedení UPDATE se odloží, dokud všichni ostatní klienti nedokončí čtení tabulky.
  2. Pokud je zadáno klíčové slovo IGNORE, operace aktualizace nebude přerušena, i když dojde k chybám duplicitního klíče. Řádky, které způsobují konflikty, nebudou aktualizovány.

Pokud používáte sloupce z tabulky název_tabulky ve výrazech UPDATE používá aktuální hodnotu sloupců. Například následující příkaz zvýší hodnotu sloupce věku o jednu:
mysql> AKTUALIZACE SET osobních údajů age=age+l;
Úkoly v UPDATE se provádějí zleva doprava. Například následující příkaz zdvojnásobí hodnotu sloupce stáří a poté ji zvýší: mysql> AKTUALIZOVAT SET osobních údajů věk=věk*2, věk=věk+l;
Pokud nastavíte hodnotu sloupce na to, co je, MySQL to zjistí a neaktualizuje se.
Pokud aktualizujete sloupec, který byl deklarován jako NOT null, na hodnotu NULL, nastaví se na výchozí hodnotu vhodnou pro konkrétní datový typ a zvýší čítač varování o jednu. Výchozí hodnota je 0 pro číselné sloupce, prázdný řetězec ("") pro znakové sloupce a null pro sloupce data a času.
UPDATE vrátí počet řádků, které byly skutečně aktualizovány. V MySQL 3.22 a novějších, funkce mysql_info() rozhraní C API API vrátí počet řádků, které odpovídaly dotazu a byly aktualizovány, a také počet varování, ke kterým došlo během UPDATE.
Od MySQL 3.23 můžete použít limit počet řádků omezit rozsah AKTUALIZACE.
Konstrukce LIMIT funguje takto:

  1. Před MySQL 4.0.13 byl LIMIT limitem počtu zpracovaných řádků. Operátor skončil, jakmile provedl aktualizaci počet řádkůřádky, které odpovídaly klauzuli WHERE.
  2. Počínaje MySQL 4.0.13 je limit limit pro shodu řetězců. Operátor odejde, jakmile najde počet řádkůřádky, které splňují klauzuli WHERE, bez ohledu na to, zda byly skutečně aktualizovány.

Pokud příkaz UPDATE obsahuje pořadí podle klauzule, pak se řádky aktualizují v pořadí určeném touto konstrukcí. ORDER BY lze použít počínaje MySQL 4.0.0.
Počínaje MySQL 4.0.0 je také možné provádět operace UPDATE, které fungují na více tabulkách najednou:
UPDATE items,month SET items.price=month.price WHERE items.id-month. id/ Tento příklad ukazuje vnitřní spojení pomocí operátoru čárka, ale UPDATE s více tabulkami mohou používat jakýkoli typ spojení, který je povolen v příkazu SELECT, jako je LEFT JOIN.
Na poznámku!

  • V příkazech UPDATE s více tabulkami nemůžete použít ORDER BY nebo LIMIT.
Před MySQL 4.0.18 bylo nutné mít oprávnění UPDATE pro všechny tabulky používané v UPDATE s více tabulkami, i když nebyly ve skutečnosti aktualizovány. Počínaje MySQL 4.0.18 vyžadují tyto tabulky, jejichž sloupce jsou pouze pro čtení, ale nejsou aktualizovány, pouze oprávnění SELECT.
Pokud použijete vícetabulkový příkaz UPDATE na tabulkách InnoDB, které mají definovaná omezení cizího klíče, může je optimalizátor MySQL zpracovat v jiném pořadí, než je jejich vztah rodič-dítě. V tomto případě výpis selže a transakce bude vrácena zpět. Místo toho aktualizujte jednu tabulku a spolehněte se na vlastnost ON UPDATE, kterou poskytuje engine InnoDB automatická aktualizace související tabulky.

Aktualizace dat v databázi znamená změnu hodnot v existujících záznamech tabulky. V tomto případě je možné jak změnit hodnoty polí ve skupině řádků (dokonce i všechny řádky tabulky), tak upravit hodnotu pole v samostatném řádku.

V SQL můžete změnit záznam v databázové tabulce pomocí příkazu UPDATE. Ve své minimální podobě vypadá příkaz aktualizace dat takto:

AKTUALIZACE pole SET tabulky = hodnota

Tady, AKTUALIZACE– příkaz indikující, že byl podán požadavek na aktualizaci dat;

stůl– název tabulky, ve které budou provedeny změny;

SOUBOR– příkaz následovaný čárkami oddělenými poli s přiřazenými hodnotami;

pole– pole tabulky, ve kterém bude změna provedena;

význam– nová hodnota, která se má zadat do pole.


Pokud například chcete nastavit pole ve všech řádcích tabulky na nulu, můžete spustit následující dotaz:

AKTUALIZACE SET cena zboží = 0

V tomto případě bude mít pole cena v absolutně všech dostupných řádcích tabulky hodnotu 0.

Změna jedné hodnoty

Změna hodnoty všech polí v tabulce je extrémně vzácná. Nejčastěji je potřeba změnit hodnotu konkrétní položky. K tomu bude na konec řádku s příkazem UPDATE přidána direktiva WHERE, která určuje podmínku, která určuje, na kterém řádku se má operace aktualizace provést.

Tady je stůl:

Potřebujeme například aktualizovat náklady na produkt jeho numerickou hodnotou, kterou známe. Chcete-li to provést, spusťte následující dotaz:

AKTUALIZACE SET cena zboží = 150 KDE num = 2

Nyní, před operací změny polí, bude vybrán řádek, který splňuje podmínku num = 2. V tabulce je pouze jeden takový řádek. V této skladě bude cena změněna na hodnotu 150. Tím získáme tabulku se změněnou cenou zboží.

Provádění změn ve více řádcích s podmínkou výběru

Pokud si pamatujete celou řadu podmínek v dotazu, dokážete si představit, jak rozmanité mohou být výběry. Aktualizační dotazy lze tedy provádět buď s jedním řádkem, nebo se skupinou řádků, nebo se všemi řádky tabulky. Vše závisí na úkolu, který je před vámi, a také na tom, s jakými řádky tabulky potřebujete provést operace aktualizace.

Chceme například snížit na polovinu ceny všech položek, které aktuálně stojí 100 a více. Poptávka:

AKTUALIZACE zboží SET cena = cena / 2 KDE cena >= 100

Stav KDE zde obsahuje pravidlo, že budou vybrány pouze produkty s cenou rovnou nebo vyšší než 100 a ty produkty s cenou nižší než 100 nebudou dotazem ovlivněny.

cena = cena / 2- vzorec, podle kterého bude vypočítána nová cena zboží. Nová cena bude zapsána jako stará cena dělená dvěma.

V důsledku provedení takového dotazu získáme tabulku se změněnými záznamy:

Aktualizujte hodnoty ve více polích v řádku

Pokud je potřeba aktualizovat více polí najednou, všechna pole se svými hodnotami jsou uvedena za direktivou SET oddělená čárkami. Například potřebujete změnit název a cenu produktu s kódem 2 na „železo“ s cenou 300:

AKTUALIZACE SET zboží název = "(!LANG:železo" , price = 300 WHERE num = 2 !}

Takový dotaz přiřadí každému odpovídajícímu poli v řádku jeho hodnotu. A podmínka bude naznačovat, ve kterém řádku budou změny provedeny.


Výše jsou uvedeny hlavní typy operací aktualizace. Na jejich základě se tvoří dotazy, které řeší většinu problémů se změnou dat ve vývoji pomocí SQL.

Pokud potřebujeme změnit nebo aktualizovat data v MySQL, můžeme k práci použít příkaz SQL UPDATE. ,

gramatika

Následuje příkaz UPDATE pro úpravu dat tabulky MySQL Obecná syntaxe SQL:

UPDATE název_tabulky SET pole1=nová-hodnota1, pole2=nová-hodnota2

  • Můžete aktualizovat jedno nebo více polí současně.
  • V klauzuli WHERE můžete zadat libovolnou podmínku.
  • Data můžete také aktualizovat v samostatné tabulce.

Když potřebujete aktualizovat data uvedená v řádcích tabulky, INEKE je velmi užitečné.

Příkazový řádek pro aktualizaci dat

Níže aktualizujeme w3big_tbl zadaný v datové tabulce pomocí příkazu UPDATE INEKE SQL:

příklady

Následující příklad aktualizuje datovou tabulku jako hodnotu pole w3big_title w3big_id 3:

# mysql -u root -p heslo; Zadejte heslo:******** mysql> use w3big; Databáze změněna mysql> AKTUALIZACE w3big_tbl -> SET w3big_title="(!LANG:Learning JAVA" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}

Pro aktualizaci dat použijte PHP skript

PHP funkce používat mysql_query () k provádění příkazů SQL, můžete použít příkaz SQL UPDATE nebo INEKE neplatí.

Tato funkce v MySQL> příkazový řádekúčinek provádění příkazů SQL je stejný.

příklady

Následující příklad aktualizuje datové pole w3big_id w3big_title 3.

příkaz UPDATE- provede změny již existující záznam nebo v sadě záznamů v tabulce SQL. Změní existující hodnoty v tabulce nebo hlavní tabulce pohledu.

Syntaxe příkazu UPDATE

Syntaxe příkazu UPDATE

příkaz UPDATE. Základní klíčová slova a parametry příkazu UPDATE

  • schéma- identifikátor autority, obvykle stejný jako nějaké uživatelské jméno
  • tabulka - název tabulky SQL ve kterém se údaje mění; pokud je definován pohled, změní se data v hlavní tabulce SQL reprezentace
  • poddotaz_1 - poddotaz, se kterým server zachází stejně jako s pohledem
  • zsloup - sloupec tabulky SQL nebo pohledy SQL, jehož hodnota se mění; if sloupec tabulky z klauzule SOUBOR vynechán, hodnota sloupce zůstane nezměněna
  • expr - ; tento výraz může obsahovat hlavní proměnné a volitelné indikátorové proměnné
  • dílčí dotaz_2 - nová hodnota přiřazená příslušnému sloupci
  • dílčí dotaz_3 - nová hodnota přiřazená příslušnému sloupci

KDE- definuje rozsah řádků, které mají být upraveny těmi, pro které je zadaná podmínka SKUTEČNÝ; pokud je tato fráze vynechána, aktualizují se všechny řádky v tabulce nebo pohledu.
Při vydání souhlasu jakékoli spouštěč AKTUALIZACE definované na stole.
Dílčí dotazy. Pokud nabídka SOUBOR obsahuje dílčí dotaz, vrací přesně jeden řádek pro každý upravovaný řádek. Každá hodnota ve výsledku dílčího dotazu je přiřazena k odpovídajícím sloupcům seznamu v závorkách. Pokud poddotaz nevrací žádné řádky, je přiřazen sloupec NULA. Dílčí dotazy může vybrat data z upravené tabulky. Věta SOUBOR umí kombinovat výrazy a dílčí dotazy.

Příklad příkazu UPDATE 1
Změna hodnocení pro všechny kupující na hodnotu rovnou 200:

Zákazníci SOUBOR hodnocení = 200;

Příklad příkazu UPDATE 2
Nahrazení hodnoty sloupce ve všech řádcích tabulky se obecně používá zřídka. Proto v týmu, jako v týmu VYMAZAT, můžete použít predikát. Chcete-li provést zadanou náhradu hodnot sloupce hodnocení pro všechny kupující, které obsluhuje prodejce Giovanni (snum = 1003), zadejte:

Zákazníci SOUBOR hodnocení = 200 WHERE snum = 1001;

Příklad příkazu SQL UPDATE 3
Ve větě SOUBOR můžete zadat libovolný počet hodnot pro sloupce oddělené čárkami:

emp SOUBOR job = 'MANAGER', sal = sal + 1000, deptno = 20 WHERE ename = 'JONES';

Příklad příkazu UPDATE 4
Ve větě SOUBOR je možné zadat hodnotu null bez použití speciální syntaxe (jako je IS NULL). Pokud tedy chcete nastavit všechna hodnocení zákazníků z Londýna (město = 'Londýn') na NULL, zadali byste:

Zákazníci SOUBOR hodnocení = NULL WHERE město = 'Londýn';

Příklad příkazu UPDATE 5
Vysvětluje použití následující syntaxe příkazu:

  • Obě formy návrhu SOUBOR společně v jednom prohlášení.
  • Poddotaz.
  • Klauzule WHERE, která omezuje rozsah řádků, které mají být upraveny.

Emp a SOUBOR deptno=
(VYBRAT deptno FROM dept WHERE loc = 'BOSTON'), (sal, comm) = ( VYBRAT 1.1*AVG(sal), 1.5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN ( VYBRAT deptno FROM dept WHERE loc = 'DALLAS' NEBO loc = 'DETROIT');

Výše uvedené prohlášení dělá následující:

  • Upravuje pouze ty zaměstnance, kteří pracují v Dallasu nebo Detroitu
  • Nastaví hodnotu sloupce deptno pro zaměstnance z Bostonu
  • Nastaví plat každého zaměstnance na 1,1násobek průměrné mzdy celého oddělení
  • Nastaví provizi každého zaměstnance na 1,5násobek průměrné provize celého oddělení


Související články: