Запити 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 є можливість розмежування доступів для користувачів БД. Можна так спробувати. Можливо, простіше було б зробити заборону редагування поля в самому веб-додаток, а не на рівні БД.
Вітаю!
Як можна зробити запит, щоб змінити дані в різних таблицях?
Добрий день, Тетяна.
Варто використовувати окремі запити для кожної таблиці.