Запити sql для поновлення даних (update)

вивчаємо SQL

Під оновленням даних в БД мається на увазі зміна значень в існуючих записах таблиці. При цьому можливо як зміна значень полів в групі рядків (навіть всіх рядків таблиці), так і правка значення поля окремого рядка.

У SQL, змінити запис в таблиці БД можна за допомогою команди UPDATE. У самому мінімальному вигляді команда поновлення даних виглядає наступним чином:

UPDATE таблиця SET поле = значення

Тут, UPDATE - команда вказує, що запит на оновлення даних;

таблиця - назва таблиці, в якій буде проводитися зміни;

SET - команда, після якої через кому вказуються поля з призначуваними ним значеннями;

поле - поле таблиці, в яке буде внесено зміну;

значення - нове значення, яке буде внесено в поле.

Наприклад, якщо необхідно задати полю в усіх рядках таблиці значення рівне нулю, можна виконати такий запит:

UPDATE goods SET price = 0

В цьому випадку, поле price абсолютно у всіх наявні рядках таблиці прийме значення 0.

Зміна одного значення

Зміна значення всіх полів в таблиці необхідно вкрай рідко. Найчастіше необхідно поміняти значення якоїсь конкретної записи. Для цього в завершенні рядки з командою UPDATE буде додана директива WHERE, в якій вказується умова, що визначає з якою саме рядком потрібно виконати операцію оновлення.

num
(номер товару)

Для прикладу, потрібно оновити вартість товару з відомим нам його значенням num. Для цього, виконаємо наступний запит:

UPDATE goods SET price = 150 WHERE num = 2

Тепер, перед операцією зміни полів, буде обрана рядок, яка задовольнить умові num = 2. Така рядок в таблиці одна. У цій стоці ціна і буде змінена на значення 150. У результаті отримаємо таблицю зі зміненою ціною товару.

Внесення змін до кілька рядків з умовою відбору

Якщо згадати все різноманіття умов в запиті. можна уявити собі наскільки різноманітними можуть бути вибірки. Тому і запити на оновлення можуть виконуватися або з одним рядком, або з групою рядків, або з усіма рядками таблиці. Все залежить від що стоїть перед вами завдання, а так само з якими рядками таблиці потрібно виконувати операції оновлення.

Наприклад, ми хочемо зменшити в два рази ціну всіх товарів, які зараз коштують від 100 і більше. запит:

UPDATE goods SET price = price / 2 WHERE price> = 100

Умова WHERE тут містить правило, за яким будуть обрані тільки товари з ціною рівною або більше 100, а ті товари, ціна у яких нижче 100, порушені запитом не будуть.

price = price / 2 - формула, по якій буде обчислюватися нова ціна товарів. Нова ціна буде записана рівній старою ціною поділеної на два.

В результаті виконання такого запиту отримаємо таблицю зі зміненими записами:

num
(номер товару)

Оновлення значень в декількох полях рядка

При необхідності оновлювати відразу кілька полів, все поля з їх значеннями вказуються після директиви SET через кому. Наприклад, потрібно змінити назву і ціну товару з кодом 2 на «праска», вартістю 300:

UPDATE goods SET title = "праска". price = 300 WHERE num = 2

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

Вище наведені основні види операцій оновлення. На їх основі формується запити для вирішення більшості завдань зміни даних в розробці з застосуванням SQL.

Ще матеріали з цього розділу

Добридень!
А чи можна зробити так:
UPDATE goods SET title, price = 100 WHERE num = 2

Тобто привласнити двох полях одне значення?

Добрий день, Дмитро.
Ні, варто зробити два присвоєння через кому. Крім того, в цих полях будуть різні типи даних, тому для title знадобляться лапки.

Добридень!
Чи є можливість заборонити редагування по деяких полях?
Наприклад, необхідно оновлювати дані тільки за порядковим номером, а по title цього робити не можна.

Добрий день, Анастасія.
З такою проблемою, зізнатися, не стикався. В СУБД MySQL є можливість розмежування доступів для користувачів БД. Можна так спробувати. Можливо, простіше було б зробити заборону редагування поля в самому веб-додаток, а не на рівні БД.

Вітаю!
Як можна зробити запит, щоб змінити дані в різних таблицях?

Добрий день, Тетяна.
Варто використовувати окремі запити для кожної таблиці.