UPDATE

Синтаксис:

UPDATE ім’я таблиці SET список полів та значень WHERE умова

 

UPDATE змінює значення вказаних полів на нові, причому тільки у тих рядках, які задовольняють умові. Наприклад:

 

UPDATE table1 SET name=’vasya’ WHERE name=’semen’

 

Цей запит змінить значення поля name на ‘vasya’ у всіх рядках у таблиці table1, де поле name дорівнює ‘semen’. або ж

 

UPDATE table1 SET name=’vasya’ WHERE address=’Ostafova str.’

 

Цей запит змінить всі імена на ’vasya’ у полів де адреса ’Ostafova str.’.

 

Такий приклад

UPDATE table1 SET id=id*100

 

Змінить значення поля id на значення поля id, помножене на 100, у всій таблиці (у всій таблиці – тому що не задана умова WHERE).

 

Припустимо ви створити красиву базу даних, і робите до неї запит. Запит відповідає всім вимогам синтаксису SQL, але в результаті ви все одно отримуєте помилку. Наприклад після запиту:

UPDATE lections SET number='2', course='1', group='1', lector='1',

room='6', day='3' WHERE ID=23 LIMIT 1;

 

ми отримуємо таке повідомлення:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group='1', lector='1', room='6', day='3' WHERE ID=23 LIMIT 1' at line 1

В чому проблема? Мова запитів містить оператор (чи як це назвати) GROUP BY, і тому вашій СУБД важко розібратися що ви мали на увазі. Тому є два рішення:

Перше: Не називайте свої таблиці і їх поля ключовими словами з SQL.

Але може вам подобається назва поля, або ви вже написали дуже багато коду, де вона використовується. Тому вам краще підійде …

Друге рішення: виділити назву поля як ідентифікатор символами наголосу ASCII 96 "`"

Символ “`» - називається grave accent.

Такий запит працює нормально:

 

UPDATE lections SET number='2', course='1', `group`='1',

lector='1', room='6', day='3' WHERE ID=23 LIMIT 1