кодесурса
«MYSQL

MySQL ОБНОВЛЕНИЕ Заявление

script1adsense2code
script1adsense3code

ОБНОВЛЕНИЕ таблицы

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

Версия: 5.6

Синтаксис:

Единый стол:

 ОБНОВЛЕНИЕ [LOW_PRIORITY] [IGNORE] table_reference 
SET col_name1 = {expr1 | DEFAULT} [, col_name2 = {expr2 | DEFAULT}] ...
[ГДЕ где_условие]
[СОРТИРОВАТЬ ПО ...]
[LIMIT row_count]

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

 ОБНОВЛЕНИЕ [LOW_PRIORITY] [IGNORE] table_references
SET col_name1 = {expr1 | DEFAULT} [, col_name2 = {expr2 | DEFAULT}] ...
[ГДЕ где_условие]

аргументы

название Описание
табличная_ссылка (ы) Имя таблицы (таблиц) для обновления.
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 в качестве примера таблицы.

Пример таблицы: новая покупка


MySQL UPDATE столбец

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

UPDATE newpurchase SET receive_qty=20;

ОБНОВЛЕНИЕ MySQL с ГДЕ

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

UPDATE newpurchase 
SET receive_qty=25 
WHERE purch_price>50;

MySQL UPDATE с использованием NULL

Команда MySQL UPDATE может быть использована для обновления значения столбца до NULL, установив column_name = NULL, где column_name - это имя столбца, который нужно обновить. Следующая инструкция MySQL обновит столбец pub_lang с NULL, если значение_покупки больше 50. В этом операторе другие столбцы также обновляются соответствующими новыми значениями.

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

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

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

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

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

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

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

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

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

Обновление MySQL Table с использованием PHP Script

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


PHP скрипт

 <?php
  $dbhost ='localhost';
  $dbuser ='root';
  $dbpass = '';
  $connec = MySQL_connect($dbhost, $dbuser, $dbpass);
  if(!$connec)
  {
  die('Could not connect: ' . MySQL_error());
  }
  $sql = "UPDATE item
  SET value ='112'
  WHERE item_code='item1'";
  MySQL_select_db('MySQL');
  $result = MySQL_query($sql, $connec);
  if(!$result)
  {
  die('Could not update data: ' . MySQL_error());
  }
  echo "Data successfully updated...";
  MySQL_close($connec);
  ?>

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

«обновлен

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

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


проблема

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

Код:

UPDATE 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

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

«Mysql

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

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

 MySQL> SELECT book_id, book_name, pub_lang, book_price
    -> ОТ 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, purchase_price, total_cost
    -> С покупки;
+ --------- + ---------- + ------------- + ------------ +
| book_id | pub_lang | купленная цена | 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%, а также обновить с помощью buy_price и total_cost таблицы puchase на 5%, и этот прирост повлияет только на те строки в book_mast и таблице покупки , которые языком публикации является английский, и book_id совпадает в обеих таблицах, мы можем написать следующий код:

UPDATE book_mast,purchase
SET book_mast.book_price=book_mast.book_price+(book_mast.book_price*.05),
purchase.purch_price=purchase.purch_price+(purchase.purch_price*.05),
purchase.total_cost=receive_qty*(purchase.purch_price+(purchase.purch_price*.05))
WHERE book_mast.book_id=purchase.book_id
AND purchase.pub_lang="English";

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

 MySQL> SELECT book_id, book_name, pub_lang, book_price
    -> ОТ 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, purchase_price, total_cost
    -> С покупки;
+ --------- + ---------- + ------------- + ------------ +
| book_id | pub_lang | купленная цена | 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 -

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

Код:

UPDATE table11, table12, table13 
SET table11.aval1 = table12.bval1
WHERE table11.id = table13.id 
AND table12.bval2 = table13.cval1

объяснение

«Mysql

Выход:

«Mysql

Предыдущий: ВСТАВИТЬ С ЛЕВЫМ СОЕДИНЕНИЕМ
Далее: MySQL Удалить

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code