Заявление MySQL UPDATE

Таблица UPDATE

Оператор MySQL UPDATE используется для обновления столбцов существующих строк в таблице с новыми значениями.

Версия: 5.6

Синтаксис:

Одна таблица:

 ОБНОВЛЕНИЕ [LOW_PRIORITY] [IGNORE] table_reference SET col_name1 = {expr1 | DEFAULT} [, col_name2 = {expr2 | DEFAULT}] ... [WHERE where_condition] [ORDER BY ..  .] [LIMIT row_count] 

Несколько таблиц:

 ОБНОВЛЕНИЕ [LOW_PRIORITY] [IGNORE] table_references SET col_name1 = {expr1 |  ПО УМОЛЧАНИЮ} [, col_name2 = {expr2 | DEFAULT}] ... [WHERE where_condition] 

Аргументы

Имя Описание table_reference (s) Имя таблиц, которые нужно обновить. col_name1, col_name2, .. Имя столбца (столбцов) для обновления. expr1, expr2, … Новое значение (я).

  • Для отдельной таблицы оператор UPDATE обновляет столбцы существующих строк в названной таблице новыми значения. Определенные столбцы можно изменить с помощью предложения SET, задав новые значения для этого столбца.
  • Предложение WHERE можно использовать для указания условий, которые определяют, какие строки следует обновлять. Без использования предложения WHERE обновляются все строки.
  • Предложение ORDER BY используется для обновления уже указанного порядка.
  • Предложение LIMIT определяет ограничение на количество строк, которые могут быть обновлены.
  • Для нескольких таблиц UPDATE обновляет строку в каждой таблице, указанной в table_references, которая удовлетворяет условиям. В этом случае нельзя использовать ORDER BY и LIMIT.

Оператор UPDATE поддерживает следующие модификаторы:

  • LOW_PRIORITY: использование LOW_PRIORITY, выполнение UPDATE откладывается до тех пор, пока другие клиенты не будут читать из таблицы. Это влияет только на подсистемы хранения, которые используют только блокировку на уровне таблицы (например, MyISAM, MEMORY и MERGE).
  • IGNORE: с помощью ключевого слова IGNORE оператор обновления не прерывается, даже если во время Обновить. Строки, в которых возникают конфликты повторяющихся ключей, не обновляются. Строки, столбцы которых обновляются до значений, которые могут вызвать ошибки преобразования данных, вместо этого обновляются до ближайших допустимых значений.

Ниже приведены некоторые примеры при обновлении MySQL, где мы использовали newpurchase в качестве образца таблицы.

Пример таблицы: newpurchase

столбец MySQL UPDATE

Столбец MySQL UPDATE можно использовать для обновления некоторых определенных столбцов. Следующий оператор MySQL обновит столбец receive_qty таблицы newpurchase новым значением 20..

  ОБНОВЛЕНИЕ newpurchase SET receive_qty = 20;  

ОБНОВЛЕНИЕ MySQL с помощью WHERE

Команда MySQL UPDATE может использоваться с предложением WHERE для фильтрации (по определенным условиям), какие строки будут обновлены. Следующая инструкция MySQL обновит столбец receive_qty таблицы newpurchase новым значением 25, если значение purch_price больше 50.

  UPDATE newpurchase SET receive_qty = 25 WHERE purch_price> 50;  

ОБНОВЛЕНИЕ MySQL с использованием NULL

ОБНОВЛЕНИЕ MySQL можно использовать команду для обновления значения столбца до NULL, установив имя_столбца = NULL, где имя_столбца — это имя столбца, который нужно обновить. Следующий оператор MySQL обновит столбец pub_lang на NULL, если purch_price больше 50. В этом операторе другие столбцы также обновляются соответствующими новыми значениями.

  UPDATE newpurchase SET receive_qty =  20, pub_lang = 'Hindi', pub_lang = NULL WHERE purch_price> 50;  

MySQL ОБНОВЛЕНИЕ нескольких столбцов

Команда MySQL UPDATE может использоваться для обновления нескольких столбцов, указав разделенный запятыми список имя_столбца = новое_значение. Где column_name — это имя столбца, который нужно обновить, а new_value — это новое значение, с которым будет обновлен столбец. Следующий оператор MySQL обновит столбцы receive_qty, pub_lang и receive_dt новыми значениями 20, хинди и 2008-07-10, если purch_price больше 50.

  UPDATE newpurchase SET receive_qty  = 20, pub_lang = 'Hindi', receive_dt = '2008-07-10' WHERE purch_price> 50;  

ОБНОВЛЕНИЕ MySQL с подзапросами

Далее мы обсудили, как использовать команду MySQL UPDATE с подзапросами.

Следующий оператор MySQL обновит purch_price с purch_price, умноженным на 5, если он удовлетворяет условие, определенное в подзапросе, начинающемся с SELECT, заключенного в пару круглых скобок.

Подзапрос извлекает из таблицы покупок только те cate_id, если их соответствующее значение receive_qty больше 10.

  UPDATE newpurchase SET purch_price = purch_price * .05WHERE  cate_id IN (SELECT cate_id FROM Purchase WHERE receive_qty> 10);  

Обновление таблицы MySQL с помощью скрипта PHP

Вы можете обновить данные таблицы MySQL (используя команду UPDATE) с помощью сценария PHP. В сценарии PHP-функция MySQL_query () выполняет команду SQL. Мы использовали таблицу под названием «элемент» для применения запроса:
Имя таблицы: структура элемента: item_codevarchar (20), valueint (11), quantityint (11), где item_code — это первичный ключ. В следующих строках таблицы элементов будет обновлен столбец «значение», отмеченный красным прямоугольником.

PHP-скрипт

   php $ dbhost = 'localhost'; $ dbuser  = 'root'; $ dbpass = ''; $ connec = MySQL_connect ($ dbhost, $ dbuser, $ dbpass); if (! $ connec) {die ('Не удалось подключиться:'. MySQL_error ());} $ sql  = "UPDATE item SET value = '112' WHERE item_code = 'item1'"; MySQL_select_db ('MySQL'); $ result = MySQL_query ($ sql, $ connec); if (! $ Result) {die ('Не удалось обновить  data: '. MySQL_error ());} echo "Данные успешно обновлены ..."; MySQL_close ($ connec);?>  

Пример вывода:

Несколько обновлений в MySQL

Пример таблицы: table1

Проблема

Если вы хотите обновить val1 с помощью 5,8 и 7 для соответствующих идентификаторов 1,3 и 4, а другой val1 останется таким же, а val2 будет обновлен с 13 и 5 для соответствующих id 2 и 4, а остальные останутся такими же, следующие обновленные государственные деятели t можно использовать с использованием IF и CASE.

Код:

  ОБНОВЛЕНИЕ table1 SET val1 = CASE id WHEN 1 THEN 5 WHEN 3 THEN 8 WHEN 4 THEN 7 ELSE val1 END, val2 =  CASE id WHEN 2 THEN 13 WHEN 4 THEN 5 ELSE val2 END WHERE id IN (1, 2, 3, 4);  

Наглядное представление:

Пример вывода:

Примеры: ОБНОВЛЕНИЕ MySQL для нескольких таблиц

Здесь мы использовали две таблицы book_mast и buy для следующего примера в качестве образца таблицы. Мы показали некоторые столбцы в связанных таблицах. Вот таблицы ниже —

 MySQL> SELECT book_id, book_name, pub_lang, book_price -> FROM book_mast; + -------- + ----------  -------------------------- + --------- + ---------- + |  book_id |  book_name |  pub_lang | book_price | + -------- + ------------------------------------  + --------- + ---------- + |  BK001 |  Введение в электродинамику |  Английский |  85.00 |  |  BK002 |  Понимание стальных конструкций |  Английский |  105,50 |  |  BK003 |  Руководство по работе в сети |  Хинди |  200.00 |  |  BK004 |  Передача тепла и массы |  Английский |  250.00 |  |  BK005 |  Концептуальная физика |  NULL |  145.00 |  |  BK006 |  Основы тепла |  Немецкий |  112.00 |  |  BK007 |  Продвинутая 3D-графика |  Хинди |  56.00 |  |  BK008 |  Анатомия человека |  Немецкий |  50,50 |  |  BK009 |  Уход за психическим здоровьем |  Английский |  145.00 |  |  BK010 |  Основы термодинамики |  Английский |  225.00 |  |  BK011 |  Экспериментальный анализ кошки |  Французский |  95.00 |  |  BK012 |  Природа мира |  Английский |  88.00 |  |  BK013 |  Окружающая среда - устойчивое будущее |  Немецкий |  100.00 |  |  BK014 |  Концепции здоровья |  NULL |  180. 00 |  |  BK015 |  Анатомия и физиология |  Хинди |  135.00 |  |  BK016 |  Сети и телекоммуникации |  Французский |  45.00 |  + -------- + ------------------------------------ + ---  ------ + ---------- + 16 строк в наборе (0,00 сек) и MySQL> SELECT book_id, pub_lang, purch_price, total_cost -> FROM Purchase; + -------  - + ---------- + ------------- + ------------ + |  book_id |  pub_lang |  purch_price |  total_cost | + --------- + ---------- + ------------- + ------------  + |  BK001 |  Английский |  75.00 |  1125.00 |  |  BK004 |  Английский |  55.00 |  440.00 |  |  BK005 |  NULL |  20.00 |  400.00 |  |  BK004 |  Английский |  35.00 |  525.00 |  |  BK001 |  Английский |  25.00 |  200.00 |  |  BK003 |  Хинди |  45.00 |  900.00 |  + --------- + ---------- + ------------- + ------------ + 6  строк в наборе (0,02 сек) 

Если мы хотим обновить book_price таблицы book_mast с шагом 5 %, а также обновите purch_price и total_cost таблицы puchase с шагом 5%, и это приращение повлияет на только те строки в таблицах book_mast и buy , язык публикации которых английский, а book_id совпадают в обеих таблицах, мы можем написать следующий код —

  UPDATE book_mast, PurchaSET book_mast.book_price = book_mast.book_price + (book_mast.book_price * .05), buy.purch_price = Purchase.purch_price + (покупка  .purch_price * .05), Purchase.total_cost = receive_qty * (Purchase.purch_price + (Purchase.purch_price * .05)) ГДЕ book_mast.book_id = Purchase.book_idAND Purchase.pub_lang = "English";  

После обновления должно быть показано, что выделенные строки были внесены в обе таблицы.

 MySQL> SELECT book_id, book_name, pub_lang, book_price -> FROM book_mast; + -------- + ---------------------  --------------- + --------- + ---------- + |  book_id |  book_name |  pub_lang | book_price | + -------- + ------------------------------------  + --------- + ---------- +  |  BK001 |  Введение в электродинамику |  Английский |  89,25 |   |  BK002 |  Понимание стальных конструкций |  Английский |  105,50 |  |  BK003 |  Руководство по работе в сети |  Хинди |  200.00 |   |  BK004 |  Передача тепла и массы |  Английский |  262,50 |   |  BK005 |  Концептуальная физика |  NULL |  145.00 |  |  BK006 |  Основы тепла |  Немецкий |  112.00 |  |  BK007 |  Продвинутая 3D-графика |  Хинди |  56.00 |  |  BK008 |  Анатомия человека |  Немецкий |  50,50 |  |  BK009 |  Уход за психическим здоровьем |  Английский |  145.00 |  |  BK010 |  Основы термодинамики |  Английский |  225.00 |  |  BK011 |  Экспериментальный анализ кошки |  Французский |  95.00 |  |  BK012 |  Природа мира |  Английский |  88.00 |  |  BK013 |  Окружающая среда - устойчивое будущее |  Немецкий |  100.00 |  |  BK014 |  Концепции здоровья |  NULL |  180.00 |  |  BK015 |  Анатомия и физиология |  Хинди |  135.00 |  |  BK016 |  Сети и телекоммуникации |  Французский |  45. 00 |  + -------- + ------------------------------------ + ---  ------ + ---------- + 16 строк в наборе (0,01 сек) и MySQL> SELECT book_id, pub_lang, purch_price, total_cost -> FROM Purchase; + --------  - + ---------- + ------------- + ------------ + |  book_id |  pub_lang |  purch_price |  total_cost | + --------- + ---------- + ------------- + ------------  +  |  BK001 |  Английский |  78,75 |  1181.25 |    |  BK004 |  Английский |  57,75 |  462.00 |   |  BK005 |  NULL |  20.00 |  400.00 |   |  BK004 |  Английский |  36,75 |  551.25 |    |  BK001 |  Английский |  26.25 |  210.00 |   |  BK003 |  Хинди |  45.00 |  900.00 |  + --------- + ---------- + ------------- + ------------ + 6  строк в наборе (0,08 с) 

MySQL: обновление с помощью оператора соединения

Примеры таблиц

Проблема

Если мы хотим обновите aval1of table11 с помощью bval1 table12 в соответствии со следующим условием —

1). должны совпадать идентификаторы table11 и table13, и

2). bval2 таблицы 12 должно совпадать с cval1 таблицы 13 —

тогда можно использовать следующий код.

Код:

  ОБНОВЛЕНИЕ table11, table12, table13 SET table11.aval1 = table12.bval1WHERE table11.id = table13.id И table12.bval2  = table13.cval1  

Объяснение

Вывод:


Оцените статью
nanomode.ru
Добавить комментарий