В этом учебном пособии вы узнаете, как использовать MySQL оператор UPDATE
с синтаксисом и примерами.
MySQL оператор UPDATE используется для обновления существующих записей в таблице в базе данных MySQL. Существует три синтаксиса для оператора UPDATE в зависимости от типа обновления, которое вы хотите выполнить.
Простая форма синтаксиса для оператора UPDATE при обновлении одной таблицы в MySQL:
Теперь полный синтаксис для MySQL оператора UPDATE при обновлении одной таблицы:
ИЛИ
Синтаксис оператора UPDATE при обновлении одной таблицы данными из другой таблицы в MySQL:
ИЛИ
Синтаксис MySQL оператора UPDATE при обновлении нескольких таблиц:
LOW_PRIORITY
— необязательный. Если указан LOW_PRIORITY
, обновление будет отложено до тех пор, пока не будет процессов читающих из таблицы. LOW_PRIORITY
может использоваться с таблицами MyISAM, MEMORY и MERGE, которые используют блокировку на уровне таблицы.
IGNORE
— необязательный. Если предоставляется IGNORE
, все ошибки, возникающие во время обновления, игнорируются. Если обновление в строке приведет к нарушению первичного ключа или уникального индекса, обновление в этой строке не будет выполнено.
column1
, column2
— столбцы, которые вы хотите обновить.
expression1
, expression2
— новые значения для назначения column1
, column2
. Таким образом, column1
присваивается значение expression1
, column2
присваивается значение expression2
и т. д.
WHERE conditions
— необязательный. Условия, которые должны выполняться для выполнения обновления.
ORDER BY expression
— необязательный. Он может использоваться в сочетании с LIMIT
для сортировки записей соответствующим образом при ограничении количества записей, подлежащих обновлению.
LIMIT number_rows
— необязательный. Если указан LIMIT
, он контролирует максимальное количество записей для обновления в таблице. Максимальное количество записей, указанных в файле number_rows
, будет обновляться в таблице.
Рассмотрим очень простой пример MySQL запроса UPDATE.
В этом MySQL примере UPDATE обновил поле last_name на ‘Ford’ в таблице customers , где customer_id = 500.
Рассмотрим пример MySQL UPDATE, где вы можете обновить более одного столбца с помощью одного оператора UPDATE.
Если вы хотите обновить несколько столбцов, вы можете сделать это, разделив пары столбца / значения запятыми.
Этот пример инструкции MySQL UPDATE обновил state
в ‘Nevada’ и customer_rep
до 23, где customer_id
больше 200.
Рассмотрим пример UPDATE, который показывает, как обновить таблицу данными из другой таблицы в MySQL.
MySQL
В этом примере UPDATE будет обновляться только таблица customers для всех записей, где customer_id больше 5000. Когда supplier_name из таблицы suppliers совпадает с именем customer_name из таблицы customers , city из таблицы suppliers будет скопирован в поле city таблицы customers .
Под обновлением данных в БД подразумевается изменение значений в существующих записях таблицы. При этом возможно как изменение значений полей в группе строк (даже всех строк таблицы), так и правка значения поля отдельной строки.
В SQL, изменить запись в таблице БД можно с помощью команды UPDATE. В самом минимальном виде команда обновления данных выглядит следующим образом:
UPDATE таблица SET поле = значение
Здесь, UPDATE – команда указывающая, что запрос на обновление данных;
таблица – название таблицы, в которой будет проводиться изменения;
SET – команда, после которой через запятую указываются поля с назначаемыми им значениями;
поле – поле таблицы, в которое будет внесено изменение;
значение – новое значение, которое будет внесено в поле.
Например, если необходимо задать полю во всех строках таблицы значение равное нулю, можно выполнить такой запрос:
UPDATE goods SET price = 0
В этом случае, поле price абсолютно во всех имеющиеся строках таблицы примет значение 0.
Изменение значения всех полей в таблице необходимо крайне редко. Чаще всего необходимо поменять значение какой-то конкретной записи. Для этого в завершении строки с командой UPDATE будет добавлена директива WHERE, в которой указывается условие, определяющее с какой именно строкой нужно выполнить операцию обновления.
Имеется таблица:
Для примера, нужно обновить стоимость товара с известным нам его значением 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 – формула, по которой будет вычисляться новая цена товаров. Новая цена будет записана равной старой цене поделенной на два.
В результате выполнения такого запроса получим таблицу с измененными записями:
При необходимости обновлять сразу несколько полей, все поля с их значениями указываются после директивы SET через запятую. Например, нужно изменить название и цену товара с кодом 2 на «утюг», стоимостью 300:
UPDATE goods SET title = "утюг" , price = 300 WHERE num = 2
Такой запрос каждому соответствующему полю в строке назначит его значение. А условие укажет, в какой именно строке будут выполнены изменения.
Выше приведены основные виды операций обновления. На их основе формируется запросы для решения большинства задач изменения данных в разработке с применением SQL.
Команда UPDATE — производит изменения в уже существующей записи или во множестве записей в таблице SQL . Изменяет существующие значения в таблице или в основной таблице представления.
Синтаксис команды UPDATE
Команда UPDATE. Основные ключевые слова и параметры команды UPDATE
WHERE
- определяет диапазон изменяемых строк теми, для которых определенное условие является TRUE
; если опускается эта фраза, модифицируются все строки в таблице или представлении.
При выдаче утверждения включается любой UPDATE-триггер
, определенный на таблице.
Подзапросы
. Если предложение SET
содержит подзапрос
, он возвращает точно одну строку для каждой модифицируемой строки. Каждое значение в результате подзапроса назначается соответствующим столбцам списка в круглых скобках. Если подзапрос не возвращает никакие строки, столбцу назначается NULL
. Подзапросы
могут выбирать данные из модифицируемой таблицы. Предложение SET
может совмещать выражения и подзапросы
.
Команда UPDATE Пример 1
Изменение для всех покупателей рейтинга на значение, равное 200:
Customers SET rating = 200;
Команда UPDATE Пример 2
Замена значения столбца во всех строках таблицы, как правило, используется редко. Поэтому в команде , как и в команде DELETE
, можно использовать предикат. Для выполнения указанной замены значений столбца rating, для всех покупателей, которые обслуживаются продавцом Giovanni (snum = 1003), следует ввести:
Customers SET rating = 200 WHERE snum = 1001;
Команда SQL UPDATE Пример 3
В предложении SET
можно указать любое количество значений для столбцов, разделенных запятыми:
Emp SET job = ‘MANAGER’, sal = sal + 1000, deptno = 20 WHERE ename = ‘JONES’;
Команда UPDATE Пример 4
В предложении SET
можно указать значение NULL без использования какого-либо специального синтаксиса (например, такого как IS NULL). Таким образом, если нужно установить все рейтинги покупателей из Лондона (city = ‘London’) равными NULL-значению, необходимо ввести:
Customers SET rating = NULL WHERE city = ‘London’;
Команда UPDATE Пример 5
Поясняет использование следующих синтаксических конструкций команды :
Emp a SET deptno =
(SELECT deptno FROM dept WHERE loc = ‘BOSTON’), (sal, comm) = (SELECT 1.1*AVG(sal), 1.5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN (SELECT deptno FROM dept WHERE loc = ‘DALLAS’ OR loc = ‘DETROIT’);
Вышеупомянутое утверждение выполняет следующие операции:
This MySQL tutorial explains how to use the MySQL UPDATE statement with syntax and examples.
In its simplest form, the syntax for the UPDATE statement when updating one table in MySQL is:
UPDATE table SET column1 = expression1, column2 = expression2, ... ;
However, the full syntax for the MySQL UPDATE statement when updating one table is:
UPDATE [ LOW_PRIORITY ] [ IGNORE ] table SET column1 = expression1, column2 = expression2, ... ] ;
The syntax for the UPDATE statement when updating one table with data from another table in MySQL is:
UPDATE table1 SET column1 = (SELECT expression1 FROM table2 WHERE conditions) ;
The syntax for the MySQL UPDATE statement when updating multiple tables is:
UPDATE table1, table2, ... SET column1 = expression1, column2 = expression2, ... WHERE table1.column = table2.column AND conditions;
Let"s look at a very simple MySQL UPDATE query example.
UPDATE customers SET last_name = "Anderson" WHERE customer_id = 5000;
This MySQL UPDATE example would update the last_name to "Anderson" in the customers table where the customer_id is 5000.
Let"s look at a MySQL UPDATE example where you might want to update more than one column with a single UPDATE statement.
UPDATE customers SET state = "California", customer_rep = 32 WHERE customer_id > 100;
When you wish to update multiple columns, you can do this by separating the column/value pairs with commas.
state to "California" and the customer_rep to 32 where the customer_id is greater than 100.
Let"s look at an UPDATE example that shows how to update a table with data from another table in MySQL.
UPDATE customers
SET city = (SELECT city
FROM suppliers
WHERE suppliers.supplier_name = customers.customer_name)
WHERE customer_id > 2000;
This UPDATE example would update only the customers table for all records where the customer_id is greater than 2000. When the supplier_name from the suppliers table matches the customer_name from the customers table, the city from the suppliers table would be copied to the city field in the customers table.
Let"s look at a MySQL UPDATE example where you might want to perform an update that involves more than one table in a single UPDATE statement.
UPDATE customers, suppliers SET customers.city = suppliers.city WHERE customers.customer_id = suppliers.supplier_id;
This MySQL UPDATE statement example would update the city field in the customers table to the city from the suppliers table where the customer_id matches the supplier_id .
Однотабличный синтаксис:
UPDATE шя_таблтш
SET имя_столбца1=выражение1 [,
имя_столбца2=выражение2 ...]
Многотабличный синтаксис:
UPDATE имя_таблицы [, имя_таблицы...] SET имя_столбца 1=выражение1 [,имя_столбца2=выражение2
...]
Оператор UPDATE обновляет столбцы существующих строк таблицы новыми значе-ниями. Конструкция SET перечисляет столбцы, подлежащие модификации, и значения, которые им присваиваются. Если указана конструкция WHERE, она задает, какие строки должны быть обновлены. В противном случае обновляются все строки таблицы. Если указана конструкция ORDER BY, строки будут обновлены в заданном порядке. Конструк-ция LIMIT накладывает ограничение на количество обновляемых строк.
Оператор UPDATE поддерживает следующие модификаторы:
Если вы используете столбцы из таблицы имя_таблицы
в выражениях, UPDATE исполь-зует текущее значение столбцов. Например, следующий оператор увеличивает значение столбца age на единицу:
mysql> UPDATE persondata SET age=age+l;
Присвоения в UPDATE выполняются слева направо. Например, следующий оператор удваивает значение столбца age, а затем увеличивает на единицу: mysql> UPDATE persondata SET age=age*2, age=age+l;
Если вы устанавливает значение столбца в то, которое он имеет, MySQL обнаружи-вает это и не выполняет обновление.
Если вы обновляете столбец, который была объявлен как NOT null, присваивая ему значение NULL, он устанавливается в значение по умолчанию, соответствующее конкрет-ному типу данных и увеличивает счетчик предупреждений на единицу. Значение по умолчанию равно 0 для числовых столбцов, пустая строка ("") для символьных и "нуле-вое" значение для столбцов типа даты и времени.
UPDATE возвращает количество строк, которые фактически были обновлены. В MySQL 3.22 и более поздних версиях функция mysql_info() программного интерфейса С API
возвращает количество строк, которые соответствовали запросу и были обновле-ны, а также количество предупреждений, возникших во время выполнения UPDATE.
Начиная с MySQL 3.23, можно использовать limit количество_строк
для ограниче-ния области действия UPDATE.
Конструкция LIMIT работает следующим образом:
Если оператор UPDATE включает конструкцию order by, то строки обновляются в по-рядке, заданном этой конструкцией. ORDER BY может применяться, начиная с MySQL 4.0.0.
Начиная с MySQL 4.0.0, также можно выполнять операции UPDATE, которые работают с несколькими таблицами сразу:
UPDATE items,month SET items.price=month.price WHERE items.id-month. id/ Этот пример демонстрирует внутреннее объединение, использующее оператор запя-той, но многотабличные UPDATE могут использовать любой тип объединений, допусти-мый в операторе SELECT, например, LEFT JOIN.
На заметку!