mysql update statement tutorial update query syntax examples
Този урок обяснява изявлението за актуализиране на MySQL заедно със синтаксиса на заявките и примери. Също така ще научите различни варианти на командата за таблица за актуализация на MySQL:
Както при всяка друга база данни, винаги имаме нужда да актуализираме, модифицираме или променяме съществуващите данни в таблиците. В MySQL имаме оператора UPDATE, който може да се използва за актуализиране или модифициране на данните в таблицата.
С помощта на тази команда можем да актуализираме едно или много полета. Можем да актуализираме стойностите на определена таблица наведнъж. С помощта на клаузата WHERE можем да посочим използваните условия, особено когато има нужда от актуализиране на конкретни редове от таблица.
Преди да продължите напред, обърнете внимание, че използваме MySQL версия 8.0. Можете да го изтеглите от тук.
Какво ще научите:
- Синтаксис на таблицата за актуализиране на MySQL
- Команда на таблицата за актуализиране на MySQL
- # 1) MySQL Актуализиране на единична колона
- # 2) MySQL Актуализиране на няколко колони
- # 3) Актуализация на MySQL с функция ЗАМЯНА
- # 4) MySQL UPDATE с помощта на SELECT Statement
- # 5) MySQL АКТУАЛИЗИРАНЕ на няколко реда
- # 6) АКТУАЛИЗАЦИЯ НА MySQL с помощта на ключова дума INNER JOIN
- # 7) АКТУАЛИЗАЦИЯ НА MySQL с помощта на ЛЯВО ПРИСЪЕДИНЯВАНЕ на ключова дума
- Често задавани въпроси и отговори
- Заключение
Синтаксис на таблицата за актуализиране на MySQL
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition;
Обяснение на синтаксиса:
- Синтаксисът започва с ключовата дума „АКТУАЛИЗИРАНЕ“, като по този начин информира MySQL сървъра за вида дейност, която трябва да се извърши. Това е задължителна ключова дума и не може да бъде пропусната.
- След това идва името на таблицата, върху която трябва да се извърши действието за актуализация. Това е задължително и не може да се пропусне.
- Трето, отново е ключова дума - SET. Тази ключова дума информира MySQL Server за стойностите, които трябва да бъдат актуализирани за имената на колоните. Това е задължителна ключова дума и не може да бъде пропусната.
- След това ще бъдат имената на колоните, които ще бъдат актуализирани, заедно със съответните им стойности. Това също е задължително и не може да се пропусне.
- След това идва условието WHERE, което ограничава или филтрира броя на целевите редове, върху които трябва да се приложи действието UPDATE. WHERE също е ключова дума, но незадължителна.
Клаузата WHERE обаче е съществена. Ако не е споменато или ако условието не е зададено правилно, нито таблицата, нито ненужните редове няма да се актуализират.
Модификатори в изявление на таблица за актуализиране
По-долу са изброени модификаторите в изявление UPDATE.
НИСЪК ПРИОРИТЕТ: Този модификатор информира MySQL Engine да забави актуализацията, докато няма четене на връзка от таблицата.
ИГНОР: Този модификатор информира MySQL Engine да продължи с операцията ОБНОВЯВАНЕ, дори ако има някакви грешки. Не се извършва действие за актуализиране на редовете, които са причинили грешки.
Пример за актуализиране на MySQL
По-долу е дадена примерна таблица, създадена в MySQL.
Име на схемата: тихоокеански
Име на таблицата: служители
Имена на колони:
- empNum - Съдържа целочислени стойности за номера на служителя.
- lastName - Съдържа стойности на varchar за фамилното име на служителя.
- firstName - Съдържа стойности на varchar за първото име на служителя.
- имейл - Съдържа стойности на varchar за имейл адреса на служителя.
- deptNum - Задържа varchar за идентификатора на отдела, към който принадлежи служителят.
- заплата - Съдържа десетични стойности на заплата за всеки служител.
Име на схемата: тихоокеански
Име на таблицата: отдели
Имена на колони:
- deptNum - Задържа varchar за идентификатор на отдел в рамките на организация.
- city - съдържа името на града, от който работят отделите.
- държава - съдържа името на държавата, съответстваща на града.
- бонус - Задържа процентната стойност на бонуса.
Команда на таблицата за актуализиране на MySQL
# 1) MySQL Актуализиране на единична колона
Сега нека разберем запис, който бихме искали да актуализираме. Първо, ще разгледаме сценарий, при който трябва да актуализираме една колона, използвайки ключовата дума UPDATE.
Ето служител с номер на служител 1008.
Заявката и съответните резултати са както следва:
Нека актуализираме имейл адреса на този служител от ob@gmail.com на oliver.bailey@gmail.com, като използваме ключовата дума UPDATE.
АКТУАЛИЗАЦИЯ: Ключовата дума информира двигателя на MySQL, че изявлението е за актуализиране на таблица.
КОМПЛЕКТ: Тази клауза задава стойността на името на колоната, спомената след тази ключова дума, на нова стойност.
КЪДЕТО: Тази клауза определя конкретния ред, който трябва да бъде актуализиран.
След изпълнение на оператора UPDATE, изходът ще покаже статистиката, свързана с изпълнението на оператора.
По-долу са показани подробностите:
- Изявление, което е изпълнено.
- Съобщения, които показват броя на актуализираните редове и дали е имало предупреждения.
За да проверим резултата от оператора UPDATE, нека изпълним повторно оператора SELECT, за да видим промяната в имейл идентификатора.
Снимка на таблицата преди:
empNum | първо име | фамилия | електронна поща | deptNum |
---|---|---|---|---|
7 | Рим | Италия | ||
1008 | Оливър | Бейли | ob@gmail.com | 3 |
Запитване:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ;
Снимка на таблица след:
empNum | първо име | фамилия | електронна поща | deptNum |
---|---|---|---|---|
1008 | Оливър | Бейли | oliver.bailey@gmail.com | 3 |
# 2) MySQL Актуализиране на няколко колони
Синтаксисът за актуализиране на повече от една колона с помощта на оператора UPDATE е същият като този за актуализиране на една колона. Един отделен оператор SET ще има множество имена на колони заедно с новата си стойност, която трябва да бъде зададена, разделена със запетая.
Нека да разгледаме реда, който трябва да актуализираме. Ред с номер на служителя като 1003.
Тук ще се опитаме да актуализираме lastName от „Mary“ на „Margaret“ и след това имейл адреса от ml@gmail.com на margaret.langaley@gmail.com.
По-долу е UPDATE заявката. Наблюдавайте имената на колоните, разделени със запетая.
Резултатът от горното изпълнение показва същата статистика, както в предишния случай.
Следва изходът за същия запис след изпълнението на оператора UPDATE.
Снимка на таблицата преди:
empNum | първо име | фамилия | електронна поща | deptNum |
---|---|---|---|---|
1003 | Дева Мария | Ленгли | ml@gmail.com | две |
Запитване:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ;
Снимка на таблица след:
empNum | първо име | фамилия | електронна поща | deptNum |
---|---|---|---|---|
1003 | Маргарет | Ленгли | margaret.langley@gmail.com | 3 |
# 3) Актуализация на MySQL с функция ЗАМЯНА
Нека да видим повече за използването на функцията REPLACE за АКТУАЛИЗИРАНЕ на ред в таблицата. Ето нашия целеви запис, който искаме да актуализираме.
Записът по-долу е за номер на служител 1010. Ще се стремим да актуализираме имейл адреса от ja@gmail.com на jacob.armstrong@gmail.com.
Нека използваме следната UPDATE заявка с функцията REPLACE, която ще актуализира имейл идентификатора.
Следват параметрите, които се предават във функцията REPLACE. И трите параметъра имат позиционен характер, т.е. редът на параметрите не може да се променя.
1улПараметър - Съдържа името на имейл идентификатора.
двеndПараметър - Съдържа FROM имейл идентификатора, който трябва да бъде променен.
3rdПараметър - Съдържа идентификационния номер на имейл на TO, който е новата стойност.
Следва моментната снимка на таблицата след изпълнението на оператора UPDATE:
Снимка на таблицата преди:
empNum | първо име | фамилия | електронна поща | deptNum |
---|---|---|---|---|
1010 | Яков | Армстронг | ja@gmail.com | 4 |
Запитване:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ;
Снимка на таблица след:
empNum | първо име | фамилия | електронна поща | deptNum |
---|---|---|---|---|
1010 | Яков | Армстронг | jacob.armstrong@gmail.com | 4 |
# 4) MySQL UPDATE с помощта на SELECT Statement
При този тип UPDATE новата стойност за колоната, която трябва да се актуализира, се извлича чрез оператор SELECT в подзаявка. Така че, нека вземем пример тук от нашата таблица „служители“. Ето нашия целеви запис, който искаме да актуализираме.
В този случай ще актуализираме номера на отдела, т.е. колона deptNum, като използваме таблиците на отделите. Ако погледнем таблицата на отделите, deptNum = 5 съответства на Берлин. Нека преместим този служител в Шарлот на deptNum = 2.
За да се постигне тази задача, се използва следният оператор UPDATE:
За да проверим резултата от нашия оператор UPDATE, нека изпълним ИЗБЕРЕТЕ изявление.
Както е показано по-горе, стойността за колоната deptNum е актуализирана на „2“.
Снимка на таблицата преди:
empNum | първо име | фамилия | електронна поща | deptNum |
---|---|---|---|---|
1005 | Питър | Прочети | pl@gmail.com | 5 |
deptNum | Град | Страна |
---|---|---|
1 | Ню Йорк | Съединени щати |
две | Шарлот | Съединени щати |
3 | Чикаго | Съединени щати |
4 | Лондон | Англия |
5 | Берлин | Германия |
6 | Мумбай | Индия |
Запитване:
Снимка на таблица след:
empNum първо име фамилия електронна поща deptNum 7 Рим Италия НУЛА 1005 Питър Прочети pl@gmail.com две
# 5) MySQL АКТУАЛИЗИРАНЕ на няколко реда
Понякога може да се сблъскаме с изискване, при което трябва да актуализираме една или повече колони за множество редове с различни стойности.
Например, ние искаме да дадем определена сума бонус отдел, т.е. всички служители в отдел трябва да получат определена сума бонус.
какво е тип SWF файл
Общият синтаксис е както следва:
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END;
За да обясним това с пример, нека добавим още една колона към таблиците на отделите. Ще добавим колоната „бонус“ към таблицата на отдела. Идеята е да се определи процент на бонус за всеки отдел и да се увеличи заплатата на служителите с този процент, съответстващ на всеки отдел.
За да постигнем това, ще изпълним следните изрази ALTER, за да добавим колона:
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);
По-долу ще бъде структурата на таблицата, публикуваща горните промени. Новите колони ще бъдат добавени с НУЛА като стойност.

След това нека напишем UPDATE заявка, която ще актуализира процента на бонус за всеки отдел.

След изпълнение на горния оператор, по-долу е моментната снимка с актуализираните стойности за колоната Бонус.

Снимка на таблицата преди:
deptNum Град Страна Бонус 1 Ню Йорк Съединени щати НУЛА две Шарлот Съединени щати НУЛА 3 Чикаго Съединени щати НУЛА 4 Лондон Англия НУЛА 5 Берлин Германия НУЛА 6 Мумбай Индия НУЛА
Запитване:
UPDATE departments SET bonus = CASE WHEN deptNum = 1 THEN 3.00 WHEN deptNum= 2 THEN 5.00 WHEN deptNum= 3 THEN 8.00 WHEN deptNum= 4 THEN 10.00 WHEN deptNum= 5 THEN 13.00 WHEN deptNum= 6 THEN 15.00 WHEN deptNum= 7 THEN 18.00 END;
Снимка на таблица след:
deptNum Град Страна Бонус 7 Рим Италия 18. 1 Ню Йорк Съединени щати 3 две Шарлот Съединени щати 5 3 Чикаго Съединени щати 8 4 Лондон Англия 10 5 Берлин Германия 13 6 Мумбай Индия петнадесет
# 6) АКТУАЛИЗАЦИЯ НА MySQL с помощта на ключова дума INNER JOIN
ПРИСЪЕДИНЯВАНЕ е една от най-важните ключови думи в SQL изразите. Обикновено може да сте го използвали в оператора SELECT.
По принцип има четири типа изрази JOIN:
- ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ: Извлича записите, които са често срещани в двете таблици.
- ЛЯВО ПРИСЪЕДИНЯВАНЕ: Извлича всички записи от таблицата от лявата страна на ключовата дума и съответстващите записи от таблицата от дясната страна на ключовата дума.
- ПРАВИЛНО ПРИСЪЕДИНЯВАНЕ: Извлича всички записи от таблицата от дясната страна на ключовата дума и съответстващите записи от таблицата от лявата страна на ключовата дума.
- ВЪНШНО ПРИСЪЕДИНЯВАНЕ: Извлича всички записи от двете таблици, със съответните несъответстващи записи, представени като NULL.
MySQL дава уникална възможност да се използва JOIN дори в UPDATE изрази за извършване на актуализации на кръстосани таблици. Ограничено е обаче само до ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ и ЛЯВО ПРИСЪЕДИНЯВАНЕ.
Общият синтаксис на израза UPDATE, използващ ключовата дума JOIN, е както следва:
UPDATE TAB1, TAB2, (INNER JOIN | LEFT JOIN) TAB1 ON TAB1.COL1 = TAB2.COL1 SET TAB1.COL2 = TAB2.COL2, TAB2.COL3 = expr WHERE condition
- Тук изразът UPDATE очаква три елемента от данни.
- Имена на таблици, TAB1 и TAB2, върху които се извършва обединяване.
- Тип СЪЕДИНЕНИЕ, което възнамеряваме да изпълним, ВЪТРЕШНО или НАЛЯВО.
- След това следва командата SET, използвайки която можем да актуализираме стойностите на колоните в / или TAB1 и TAB2.
- И накрая, клауза WHERE за актуализиране само на онези редове, които отговарят на нашите критерии.
За да обясним това с пример, нека добавим още една колона към таблицата на служителите. Ще добавим графата „заплата“ към таблицата Служители. Идеята е да се увеличи заплатата на служителите с бонус процентна стойност, присъстваща в бонусната колона на таблицата на отдела.
За да постигнем това, ще изпълним следните изрази ALTER, за да добавим колона:
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);
След това ще попълним двете нови полета, които сме добавили. След попълване на стойностите, по-долу е съдържанието на таблицата.
Таблица на служителите:
empNum първо име фамилия електронна поща deptNum Заплата 1007 Шмит Джеймс js@gmail.com 4 18000 1001 Андрюс Джак ja@gmail.com 1 3000 1002 Швац Майк ms@gmail.com 1 5000 1003 Ленгли Маргарет margaret.langley@gmail.com две 8000 1004 Харера Сандра sh@gmail.com 1 10 000 1005 Прочети Питър pl@gmail.com две 13000 1006 Кийт Джени jk@gmail.com две 15000 1008 Бейли Оливър oliver.bailey@gmail.com 3 21000 1009 Купа Хари hb@gmail.com 5 24000 1010 Армстронг Яков jacob.armstrong@gmail.com 4 27000
Сега, нека използваме ключовата дума JOIN и актуализираме заплатата на всички служители с бонус процент в таблицата на отделите. Тук deptNum е ключът, по който ще се съпоставят двете таблици.
F ollowing е моментната снимка на заплатите на служителите към момента:

Снимка от таблицата на отделите е както следва:

Следва заявка за АКТУАЛИЗАЦИЯ, която ще актуализира заплатата на служителите въз основа на процента бонус в таблиците на отделите на базата на колоната deptNum.

Сега нека проверим заплатата на всеки служител след похода.

Ако го сравните с предишната снимка, можете лесно да разберете процента на бонуса, добавен към заплатата.
Всички служители трябва да приветстват!
Снимка на таблицата преди:
empNum първо име фамилия електронна поща deptNum Заплата 1007 Шмит Джеймс js@gmail.com 4 18000 1001 Андрюс Джак ja@gmail.com 1 3000 1002 Швац Майк ms@gmail.com 1 5000 1003 Ленгли Маргарет margaret.langley@gmail.com две 8000 1004 Харера Сандра sh@gmail.com 1 10 000 1005 Прочети Питър pl@gmail.com две 13000 1006 Кийт Джени jk@gmail.com две 15000 1008 Бейли Оливър oliver.bailey@gmail.com 3 21000 1009 Купа Хари hb@gmail.com 5 24000 1010 Армстронг Яков jacob.armstrong@gmail.com 4 27000
deptNum Град Страна Бонус 7 Рим Италия 18. 1 Ню Йорк Съединени щати 3 две Шарлот Съединени щати 5 3 Чикаго Съединени щати 8 4 Лондон Англия 10 5 Берлин Германия 13 6 Мумбай Индия петнадесет
Запитване:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ;
Снимка на таблица след:
empNum първо име фамилия електронна поща deptNum Заплата 1007 Шмит Джеймс js@gmail.com 4 21780 1001 Андрюс Джак ja@gmail.com 1 3182.7 1002 Швац Майк ms@gmail.com 1 5304,5 1003 Ленгли Маргарет margaret.langley@gmail.com две 8820 1004 Харера Сандра sh@gmail.com 1 10609 1005 Прочети Питър pl@gmail.com две 14332.5 1006 Кийт Джени jk@gmail.com две 16537,5 1008 Бейли Оливър oliver.bailey@gmail.com 3 24494.4 1009 Купа Хари hb@gmail.com 5 30645.6 1010 Армстронг Яков jacob.armstrong@gmail.com 4 32670
# 7) АКТУАЛИЗАЦИЯ НА MySQL с помощта на ЛЯВО ПРИСЪЕДИНЕНИЕ на ключова дума
Както беше обяснено в предишния раздел, има два типа JOIN, които са разрешени в MySQL UPDATE. Вече видяхме АКТУАЛИЗИРАНЕ, използвайки INNER JOIN.
Нека започнем с АКТУАЛИЗИРАНЕ, използвайки ЛЯВО СЪЕДИНЕНИЕ
Пример:
Имаме нов наем, който тепърва ще бъде назначен за който и да е отдел. Но ние трябва да дадем на всички нови наети бонус от 1%. Сега, тъй като новото наемане не е възложено на нито един отдел, няма да можем да получим информация за процента на бонуса от тази таблица. В такъв случай ще АКТУАЛИЗИРАМЕ заплатата за новите наеми, използвайки ЛЯВО ПРИСЪЕДИНЯВАНЕ.
За да постигнем това, нека добавим нов служител към базата данни на служителите.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00);
Следва новият запис, който добавихме:

Таблица на служителите:
empNum първо име фамилия електронна поща deptNum Заплата 1007 Шмит Джеймс js@gmail.com 4 21780 1001 Андрюс Джак ja@gmail.com 1 3183 1002 Швац Майк ms@gmail.com 1 5305 1003 Ленгли Маргарет margaret.langley@gmail.com две 8820 1004 Харера Сандра sh@gmail.com 1 10609 1005 Прочети Питър pl@gmail.com две 14333 1006 Кийт Джени jk@gmail.com две 16538 1008 Бейли Оливър oliver.bailey@gmail.com 3 24494 1009 Купа Хари hb@gmail.com 5 30646 1010 Армстронг Яков jacob.armstrong@gmail.com 4 32670 1011 Ханкс Том th@gmail.com НУЛА 10 000
След това ще дадем на Том бонус от 1% върху заплатата му, използвайки изявлението UPDATE с клауза LEFT JOIN:

По-долу е дадена заплатата на TOM след похода.

Ако го сравните с предишната снимка, лесно можете да разберете бонус%, добавен към заплатата.
Снимка на таблицата преди:
empNum първо име фамилия електронна поща deptNum Заплата 1011 Том Ханкс th@gmail.com НУЛА 10 000
Запитване:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ;
Снимка на таблица след:
empNum първо име фамилия електронна поща deptNum Заплата 1011 Том Ханкс th@gmail.com НУЛА 10100
Препоръчително четене = >> MySQL се присъединява
Често задавани въпроси и отговори
В # 1) Как да актуализирам атрибутите в MySQL?
Отговор: Можем да актуализираме атрибута (ите), като използваме оператора MySQL UPDATE, като изявлението започва с ключовата дума UPDATE, последвано от името на таблицата. Следва клаузата SET, последвана от име на колона и клауза WHERE.
В # 2) Как актуализирате множество записи в MySQL?
Отговор: Както е показано по-горе, под „Актуализиране на няколко реда“ секция, можем да актуализираме множество редове за една или повече колони с еднакви или различни стойности, използвайки CASE оператора.
В # 3) Можем ли да използваме JOIN в заявка за актуализация в MySQL?
Отговор: Да, MySQL позволява използването на JOIN в UPDATE изрази. Това обаче е ограничено само до ВЪТРЕШНО И ЛЯВО ПРИСЪЕДИНЯВАНЕ.
В # 4) Откъде да изтеглите MySQL?
Отговор: Можете да изтеглите MySQL версия 8.0 от тук: MySQL .
В # 5) Какво е значението на клаузата WHERE в изявлението Update?
Отговор: Клаузата WHERE ограничава броя на редовете, които трябва да се поберат в критериите на клавиша UPDATE.
Предложено четене = >> Как да използвате MySQL If Statement
Заключение
По този начин в този урок научихме за 7 различни начина за изпълнение на MySQL UPDATE изрази.
- Актуализирайте една колона
- Актуализирайте няколко колони
- Актуализирайте с помощта на REPLACE
- Актуализирайте с помощта на SELECT
- Актуализирайте няколко реда
- Актуализирайте с помощта на INNER JOIN
- Актуализирайте с ЛЯВО ПРИСЪЕДИНЯВАНЕ
Можем да използваме и двете от тях, въз основа на нашите изисквания.
Честито четене !!
Препоръчително четене
- Разлика между SQL Vs MySQL Vs SQL Server (с примери)
- Топ 40 най-добри въпроса и отговори за интервю за MySQL (2021 въпроса)
- MongoDB Актуализиране и изтриване на документ с примери
- C # Използване на Statement и C # Урок за виртуален метод с примери
- Урок за C # условни изявления
- Урок за отражение на Java с примери
- Урок за Python DateTime с примери
- Урок за Bugzilla: Ръчен урок за инструмент за управление на дефекти