MySQL анықтамалық нұсқаулығы. MySQL дерекқорына SQL сұрауларының мысалдары Таңдау шарты бар бірнеше жолға өзгертулер енгізу

UPDATE пәрмені— бар жазбаға немесе кестедегі бірнеше жазбаға өзгерістер енгізеді SQL. Кестедегі немесе көріністің негізгі кестесіндегі бар мәндерді өзгертеді.

UPDATE пәрмен синтаксисі

UPDATE пәрмен синтаксисі

UPDATE пәрмені. UPDATE командасының негізгі түйінді сөздері мен параметрлері

  • схема -рұқсат идентификаторы, әдетте кейбір пайдаланушы атымен бірдей
  • кесте көрінісі -кесте атауы SQL, онда деректер өзгертіледі; егер көрініс анықталған болса, деректер негізгі кестеде өзгертіледі SQLөкілдігі
  • subquery_1 - ішкі сұрау, сервер оны көрініс сияқты өңдейді
  • біргебаған - кесте бағаны SQLнемесе ұсыныстар SQL, мәні өзгеретін; кесте бағаны сөйлемнен болса ОРНАТУөткізілмейді, баған мәні өзгеріссіз қалады
  • expr - ; бұл өрнек негізгі айнымалыларды және қосымша индикатор айнымалыларын қамтуы мүмкін
  • ішкі сұрау_2 - сәйкес бағанға тағайындалған жаңа мән
  • ішкі сұрау_3 - сәйкес бағанға тағайындалған жаңа мән

ҚАЙДА- белгілі бір шарты барлар арқылы өзгертілетін жолдар ауқымын анықтайды ШЫН; егер бұл сөз тіркесі алынып тасталса, кестедегі немесе көріністегі барлық жолдар өзгертіледі.
Бекіту берілгенде, кез келген ЖАҢАРТУ триггері, кестеде анықталған.
Ішкі сұраулар. Ұсыныс болса ОРНАТУқамтиды ішкі сұрау, ол өзгертілген әрбір жол үшін дәл бір жолды қайтарады. Ішкі сұрау нәтижесіндегі әрбір мән жақшадағы сәйкес тізім бағандарына тағайындалады. Ішкі сұрау ешқандай жолдарды қайтармаса, баған тағайындалады NULL. Ішкі сұрауларөзгертілген кестеден деректерді таңдай алады. Ұсыныс ОРНАТУөрнектерді біріктіре алады және ішкі сұраулар.

ЖАҢАРТУ пәрмені 1-мысал
Барлық сатып алушылар үшін рейтингті 200-ге тең мәнге өзгерту:

Тұтынушылар ОРНАТУрейтинг = 200;

UPDATE пәрменінің мысалы 2
Кестенің барлық жолдары бойынша баған мәнін ауыстыру әдетте сирек қолданылады. Сондықтан командада, командадағыдай ЖОЮ, предикатты қолдануға болады. Джованни сатушысы (snum = 1003) қызмет көрсететін барлық тұтынушылар үшін бағалау бағанының мәндерін көрсетілген ауыстыруды орындау үшін мынаны енгізу керек:

Тұтынушылар ОРНАТУрейтинг = 200 WHERE snum = 1001;

SQL UPDATE пәрмені 3-мысал
Сөйлемде ОРНАТУҮтірмен бөлінген бағандар үшін мәндердің кез келген санын көрсетуге болады:

Эмп ОРНАТУжұмыс = 'MANAGER', sal = sal + 1000, deptno = 20 WHERE ename = 'JONES';

UPDATE пәрменінің мысалы 4
Сөйлемде ОРНАТУарнайы синтаксисті қолданбай NULL мәнін көрсетуге болады (мысалы, IS NULL). Осылайша, егер сіз Лондоннан (қала = 'Лондон') барлық тұтынушылар рейтингтерін NULL мәніне орнатқыңыз келсе, мынаны енгізесіз:

Тұтынушылар ОРНАТУрейтинг = NULL WHERE қала = 'Лондон';

UPDATE пәрменінің мысалы 5
Келесі пәрмен синтаксисін пайдалануды түсіндіреді:

  • Екі сөйлем формасы ОРНАТУбір мәлімдемеде бірге.
  • Ішкі сұрау.
  • Өзгертуге болатын жолдар ауқымын шектейтін WHERE сөйлемі.

Emp a ОРНАТУдептно =
(ТАҢДАУ deptno FROM dept WHERE loc = 'BOSTON'), (sal, comm) = ( ТАҢДАУ 1,1*AVG(sal), 1,5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN ( ТАҢДАУ deptno FROM dept WHERE loc = 'DALLAS' OR loc = 'DETROIT');

Жоғарыдағы мәлімдеме келесі әрекеттерді орындайды:

  • Далласта немесе Детройтта жұмыс істейтін қызметкерлерді ғана өзгертеді
  • Бостондағы қызметкерлер үшін дептно бағанының мәнін орнатады
  • Әрбір қызметкердің жалақысын бүкіл бөлімнің орташа жалақысынан 1,1 есе мөлшерінде белгілейді
  • Әрбір қызметкердің комиссиясын бүкіл бөлім бойынша орташа комиссияның 1,5 есе мөлшерінде белгілейді

Бұл MySQL оқулығы MySQL пайдалану жолын түсіндіреді UPDATE мәлімдемесісинтаксиспен және мысалдармен.

Синтаксис

Ең қарапайым түрде MySQL-те бір кестені жаңарту кезінде UPDATE мәлімдемесінің синтаксисі:

ЖАҢАРТУ кестесі SET баған1 = өрнек1, баған2 = өрнек2, ... ;

Дегенмен, бір кестені жаңарту кезінде MySQL UPDATE мәлімдемесінің толық синтаксисі:

ЖАҢАРТУ [ ТӨМЕН_БАСТЫҚТЫ ] [ ЕЛБЕРУ ] кесте SET баған1 = өрнек1, баған2 = өрнек2, ... ] ;

MySQL жүйесінде бір кестені басқа кестенің деректерімен жаңарту кезінде UPDATE мәлімдемесінің синтаксисі:

ЖАҢАРТУ кесте1 ОРНАТУ баған1 = (2 кестеден 1-өрнекті ТАҢДАУ ҚАЙДА шарттары) ;

Бірнеше кестелерді жаңарту кезінде MySQL UPDATE мәлімдемесінің синтаксисі:

ЖАҢАРТУ кесте1, кесте 2, ... ОРНАТУ баған1 = өрнек1, баған2 = өрнек2, ... ҚАЙДА кесте1.баған = кесте2.баған ЖӘНЕ шарттар;

Параметрлер немесе аргументтер

LOW_PRIORITY Қосымша. LOW_PRIORITY қамтамасыз етілсе, жаңарту келесіден оқылатын процестер болмайынша кейінге қалдырылады кесте. LOW_PRIORITY кесте деңгейіндегі құлыптауды пайдаланатын MyISAM, MEMORY және MERGE кестелерімен бірге пайдаланылуы мүмкін. ЕЛДЕРІҢІЗ Қосымша. ЕЛДЕРІК берілген болса, жаңарту кезінде кездесетін барлық қателер еленбейді. Жолдағы жаңарту бастапқы кілттің немесе бірегей индекстің бұзылуына әкелсе, сол жолдағы жаңарту орындалмайды. 1-баған, 2-баған Жаңартқыңыз келетін бағандар. өрнек1, өрнек2 Тағайындалатын жаңа мәндер 1-баған, 2-баған. Сонымен 1-баған өрнек1, 2-бағанмәні тағайындалады өрнек2, және тағы басқа. WHERE шарттары Қосымша. Жаңартуды орындау үшін орындалуы керек шарттар. Өрнегі бойынша ТӘРТІП. Қосымша. Жаңартылатын жазбалар санын шектеген кезде жазбаларды сәйкесінше сұрыптау үшін оны LIMIT параметрімен бірге пайдалануға болады. ШЕКТЕУ_жол саны Қосымша. LIMIT берілген болса, ол кестеде жаңартылатын жазбалардың ең көп санын басқарады. Көбінесе жазбалар саны көрсетілген саны_жолдаркестеде жаңартылады.

Мысал - Бір бағанды ​​жаңарту

Өте қарапайым MySQL UPDATE сұрау үлгісін қарастырайық.

Тұтынушыларды ЖАҢАРТУ SET фамилиясы = "Андерсон" WHERE customer_id = 5000;

Бұл MySQL UPDATE мысалы жаңартады тек«Андерсонға». тұтынушыларболатын кесте тұтынушы_идентификаторы 5000 құрайды.

Мысал - Бірнеше бағандарды жаңарту

MySQL UPDATE мысалын қарастырайық, мұнда бір UPDATE мәлімдемесі бар бірнеше бағандарды жаңартқыңыз келуі мүмкін.

ЖАҢАРТУ тұтынушылар SET күйі = "Калифорния", customer_rep = 32 WHERE customer_id > 100;

Бірнеше бағандарды жаңартқыңыз келсе, мұны баған/мән жұптарын үтірмен бөлу арқылы орындауға болады.

күй«Калифорнияға» және клиент_репдейін 32 мұнда тұтынушы_идентификаторы 100-ден жоғары.

Мысал - Басқа кестенің деректерімен кестені жаңарту

MySQL жүйесіндегі басқа кестенің деректерімен кестені жаңарту жолын көрсететін ЖАҢАЛЫҚТЫРУ мысалын қарастырайық.

Клиенттерді ЖАҢАРТУ
ҚАЛА ОРНАТУ = (Қаланы ТАҢДАУ
жеткізушілерден
ҚАЙДА жеткізушілер.жабдықтаушының_аты = тұтынушылар.тұтынушы_аты)
WHERE customer_id > 2000;

Бұл ЖАҢАРТУ мысалы тек жаңартады тұтынушыларбарлық жазбалар үшін кесте тұтынушы_идентификаторы 2000-нан үлкен жеткізуші_атауыбастап жеткізушілеркесте сәйкес келеді тұтынушы_атыбастап тұтынушыларкесте, қалажеткізушілер кестесінен көшіріледі қалаөрісіндегі тұтынушыларкесте.

Мысал - Бірнеше кестелерді жаңарту

Бір UPDATE мәлімдемесінде бірнеше кестені қамтитын жаңартуды орындағыңыз келетін MySQL UPDATE мысалын қарастырайық.

ЖАҢАРТУ тұтынушылар, жеткізушілер SET customer.city = providers.city WHERE customers.customer_id = suppliers.supplier_id;

Бұл MySQL UPDATE мәлімдемесінің мысалы жаңартады қалаөрісіндегі тұтынушыларүстелге қалабастап жеткізушілерболатын кесте тұтынушы_идентификаторысәйкес келеді жеткізуші_идентификаторы.

Дерекқордағы деректерді жаңарту бар кесте жазбаларындағы мәндерді өзгертуді білдіреді. Бұл жағдайда жолдар тобындағы (тіпті кестенің барлық жолдары) өрістердің мәндерін өзгертуге де, жеке жолдағы өріс мәнін өңдеуге де болады.

SQL тілінде дерекқор кестесіндегі жазбаны UPDATE командасы арқылы өзгертуге болады. Ең аз пішінде деректерді жаңарту пәрмені келесідей көрінеді:

ЖАҢАРТУ кестенің SET өрісі = мән

Мұнда, ЖАҢАРТУ– сұраныс деректерді жаңартуға арналғанын көрсететін команда;

кесте– өзгертулер енгізілетін кестенің атауы;

ОРНАТУ– тағайындалған мәндері бар үтірмен бөлінген өрістерден кейінгі пәрмен;

өріс– өзгерту енгізілетін кесте өрісі;

мағынасы– өріске енгізілетін жаңа мән.


Мысалы, кестенің барлық жолдарындағы өрісті нөлге орнату қажет болса, келесі сұрауды орындауға болады:

ЖАҢАРТУ тауарлардың SET бағасы = 0

Бұл жағдайда кестенің барлық қолжетімді жолдарындағы баға өрісі 0 мәнін қабылдайды.

Бір мәнді өзгерту

Кестедегі барлық өрістердің мәндерін өзгерту өте сирек кездеседі. Көбінесе белгілі бір жазбаның мәнін өзгерту қажет. Ол үшін ЖАҢАЛДАУ пәрмені бар жолдың соңында WHERE директивасы қосылады, ол жаңарту операциясы қай жолда орындалу керектігін анықтайтын шартты көрсетеді.

Кесте бар:

Мысалы, біз өнімнің өзіндік құнын бізге белгілі num мәнімен жаңартуымыз керек. Ол үшін келесі сұрауды орындаңыз:

ЖАҢАРТУ тауардың SET бағасы = 150 ОНДА саны = 2

Енді өрістерді өзгерту операциясы алдында num = 2 шартын қанағаттандыратын жол таңдалады. Кестеде осындай бір ғана жол бар. Бұл қорда баға 150 мәніне өзгереді. Нәтижесінде өнімнің өзгерген бағасы бар кестені аламыз.

Таңдау шарты бар бірнеше жолға өзгертулер енгізу

Егер сіз барлық әртүрлілікті есте сақтасаңыз сұраудағы шарттар, үлгілердің қаншалықты әртүрлі болуы мүмкін екенін елестете аласыз. Сондықтан жаңарту сұрауларын не бір жолмен, не жолдар тобымен, не кестенің барлық жолдарымен орындауға болады. Мұның бәрі сізде тұрған тапсырмаға, сондай-ақ жаңарту әрекеттерін орындау қажет кесте жолдарына байланысты.

Мысалы, біз қазіргі уақытта 100 немесе одан да жоғары тұратын барлық тауарлардың бағасын екі есеге түсіргіміз келеді. Сұраныс:

ЖАҢАРТУ тауарлар SET бағасы = баға / 2 ҚАЙДА бағасы >= 100

Шарт ҚАЙДАмұнда бағасы 100-ге тең немесе одан жоғары өнімдер ғана таңдалатын, ал бағасы 100-ден төмен өнімдерге сұраныс әсер етпейтін ереже бар.

баға = баға / 2– тауардың жаңа бағасы есептелетін формула. Жаңа баға бұрынғы бағаның екіге бөлінгеніне тең жазылады.

Осындай сұранысты орындау нәтижесінде біз өзгертілген жазбалары бар кестені аламыз:

Бірнеше жол өрістеріндегі мәндерді жаңарту

Бір уақытта бірнеше өрістерді жаңарту қажет болса, барлық өрістер олардың мәндерімен SET директивасынан кейін үтірмен бөлінеді. Мысалы, құны 300 болатын 2 коды бар өнімнің атауы мен бағасын «үтікке» өзгерту керек:

ЖАҢАРТУ тауарлар SET атауы = "темір" , price = 300 WHERE num = 2 !}

Бұл сұрау жолдағы әрбір сәйкес өріске оның мәнін тағайындайды. Ал шарт қандай жолға өзгерістер енгізілетінін көрсетеді.


Төменде жаңарту операцияларының негізгі түрлері берілген. Олардың негізінде SQL көмегімен өңдеудегі деректерді өзгерту мәселелерінің көпшілігін шешу үшін сұраулар жасалады.

Егер бізге MySQL жүйесінде деректерді өзгерту немесе жаңарту қажет болса, жұмыс істеу үшін SQL UPDATE пәрменін пайдалана аламыз. ,

грамматика

Төменде MySQL Sheet Data General SQL синтаксисін өзгерту үшін UPDATE пәрмені берілген:

ЖАҢАРТУ кесте_атауы SET өріс1=жаңа-мән1, өріс2=жаңа-мән2

  • Бір немесе бірнеше өрістерді бір уақытта жаңартуға болады.
  • Кез келген шартты WHERE сөйлемінде көрсетуге болады.
  • Сондай-ақ, деректерді бөлек кестеде жаңартуға болады.

Кесте жолдарында көрсетілген деректерді жаңарту қажет болғанда, INEKE өте пайдалы.

Деректерді жаңартуға арналған пәрмен жолы

Төменде деректер кестесінде көрсетілген w3big_tbl файлын SQL UPDATE пәрмені арқылы жаңартамыз:

мысалдар

Келесі мысал деректер кестесін w3big_title w3big_id өріс мәні 3 ретінде жаңартады:

# mysql -u root -p құпия сөзі; Құпия сөзді енгізіңіз:******** mysql> w3big пайдаланыңыз; Дерекқор mysql өзгертілді> ЖАҢАЛЫҚ w3big_tbl -> SET w3big_title=" JAVA тілін үйрену)" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> !}

Деректерді жаңарту үшін PHP сценарийін пайдаланыңыз

SQL операторларын орындау үшін mysql_query() пайдалану үшін PHP функциясы, SQL UPDATE мәлімдемесін пайдалануға болады немесе INEKE қолданылмайды.

MySQL> пәрмен жолындағы бұл функция SQL мәлімдемелерін орындаудың әсері бірдей.

мысалдар

Келесі мысал w3big_title 3 өрісіндегі w3big_id деректерін жаңартады.