Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализиране на данни в MySQL база данни

Тази страница обяснява как да актуализирате съществуващи данни в MySQL база данни.

Така че вече сме добавили данни към нашата база данни. Но сега осъзнаваме, че нашите данни съдържат грешка. На ябълките е присвоен UnitId от 1 — но това трябва да е 2 .

Можете да видите това тук:

Няма проблем. Просто ще актуализираме този запис.

UPDATE Изявление

SQL UPDATE изявление ни позволява да актуализираме данните в нашата база данни. Можем да използваме този израз, за ​​да променим идентификатора на единицата от 1 до 2 . За да направим това, използваме WHERE клауза, за да посочим точния запис, който трябва да актуализираме. Като това:

UPDATE Fruit
SET UnitId = 2
WHERE FruitId = 1;

По принцип е препоръчително, когато правите UPDATE операция, за да посочите полето за ID на записа, който се опитвате да актуализирате (или какъвто и да е неговият първичен ключ). Това помага да се предпазите от случайно актуализиране на грешен запис/и. В този пример знаехме, че ябълките имат FruitId от 1 . Но може да не винаги знаете идентификатора на записа, който се опитвате да актуализирате. В такъв случай можете да направите нещо подобно:

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple' AND UnitId = 1;

Можем да последваме всяко от тях с SELECT изявление и ето резултата:

Имайте предвид, че DateUpdated колоната също е актуализирана, въпреки че не сме посочили актуализация за тази колона. Това е така, защото когато създадохме таблицата, ние настроихме тази колона да се актуализира с текущата дата/час всеки път, когато има актуализация на записа.

Ето кода, който използвахме, когато създадохме тази колона:

DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

По-конкретно, това е ON UPDATE CURRENT_TIMESTAMP което доведе до актуализиране на колоната точно сега, когато изпълнихме UPDATE изявление.

Безопасни актуализации

Можехме също толкова лесно да изградим нашата UPDATE команда като тази (без AND UnitId = 1 ):

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

Въпреки това, може да срещнете следната грешка, ако се опитате да направите това:

Безопасен режим на актуализации

Ако срещнете горната грешка, това е, защото вашата MySQL връзка работи в режим на безопасни актуализации. Това ни помага да предотвратим случайно презаписване на големи количества данни. Всъщност, ако бяхме забравили да включим WHERE клауза щяхме да актуализираме всеки един запис в таблицата!

Да, изпълнението на следния код ще доведе до актуализиране на всеки запис в нашата таблица до Banana :

UPDATE Fruit
SET FruitName = 'Banana'

Така че има реална полза, като работите в режим на безопасни актуализации.

Въпреки това, ако наистина трябва да изпълните тази заявка (или ако всичките ви плодове наистина са се превърнали в банани), можете да направите едно от следните неща:

  • Променете заявката си, за да включите KEY колона. Направихме това в примерите в горната част на тази страница.
  • Деактивирайте режима на безопасни актуализации.

Деактивирайте безопасния режим на актуализации

Ако установите, че трябва да извършите UPDATE операция без използване на KEY поле, винаги можете да деактивирате режима на безопасни актуализации.

За да деактивирате режима на безопасни актуализации, изпълнете следната команда, преди да стартирате вашия UPDATE изявление:

set sql_safe_updates = 0;

Винаги е добра идея да възстановите настройката до предишното й състояние, след като сте готови — особено с настройки, които биха могли да имат широко въздействие като тази.

За да активирате режима на безопасни актуализации, изпълнете следното:

set sql_safe_updates = 1;

Всъщност можете да стартирате всичко едновременно, както следва:

set sql_safe_updates = 0;

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

select * from Fruit;

set sql_safe_updates = 1;

Актуализиране на множество полета

Можете да актуализирате множество полета, като използвате запетая, за да разделите всяко присвоено поле. Като това:

UPDATE Fruit
SET FruitName = 'Red Grapes', Inventory = '11'
WHERE FruitId = 5;

Резултат:


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изчислим разликата между две времеви марки в MySQL

  2. Използвайте MySQL релационни бази данни в Ubuntu 10.10 (Maverick)

  3. MySQL – НАЙ-МАЛКИ и НАЙ-ГОЛЕМИ оператори за сравнение

  4. показване на данни от SQL база данни в php/html таблица

  5. MySQL MONTHNAME() от числа