UPDATE запросов MySQL. Синтаксис UPDATE Запросы к базе данных MySQL и PHP
Синтаксис UPDATE
Однотабличный синтаксис:
UPDATE шя_таблтш
SET имя_столбца1=выражение1 [,
имя_столбца2=выражение2 ...]
Многотабличный синтаксис:
UPDATE имя_таблицы [, имя_таблицы...] SET имя_столбца 1=выражение1 [,имя_столбца2=выражение2
...]
Оператор UPDATE обновляет столбцы существующих строк таблицы новыми значе-ниями. Конструкция SET перечисляет столбцы, подлежащие модификации, и значения, которые им присваиваются. Если указана конструкция WHERE, она задает, какие строки должны быть обновлены. В противном случае обновляются все строки таблицы. Если указана конструкция ORDER BY, строки будут обновлены в заданном порядке. Конструк-ция LIMIT накладывает ограничение на количество обновляемых строк.
Оператор UPDATE поддерживает следующие модификаторы:
- Если указано ключевое слово LOW_PRIORITY, выполнение UPDATE откладывается до тех пор, пока все другие клиенты завершат чтение таблицы.
- Если указано ключевое слово IGNORE, операция обновления не будет прервана, даже если возникнут ошибки дублирования ключа. Строки, которые приводят к конфликтам, обновлены не будут.
Если вы используете столбцы из таблицы имя_таблицы
в выражениях, 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 работает следующим образом:
- До MySQL 4.0.13 LIMIT была ограничением количества обработанных строк. Оператор завершал работу, как только обновлял количество_строк строк, удовлетворявших условию WHERE.
- Начиная с MySQL 4.0.13, limit - ограничение соответствия строк. Оператор завершает работу, как только найдет количество_строк строк, удовлетворяющих условию WHERE, независимо от того, были ли они действительно обновлены.
Если оператор 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.
На заметку!
- Вы не можете применять ORDER BY или LIMIT в многотабличных операторах UPDATE.
Если вы используете многотабличный оператор UPDATE в отношении таблиц InnoDB, у которых определены ограничения внешних ключей, оптимизатор MySQL может обраба-тывать их в порядке, отличном от того, который задается их отношениями "родитель-ский-дочерний". В этом случае оператор завершится ошибкой и будет выполнен откат транзакции. Вместо этого обновляйте одну таблицу и полагайтесь на свойство ON UPDATE, которое предоставляет механизм InnoDB для автоматического обновления связанных таблиц.
В этом учебном пособии вы узнаете, как использовать 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.
Если нам нужно изменить или обновить данные в MySQL, мы можем использовать SQL команду UPDATE для работы. ,
грамматика
Ниже приводится команда UPDATE для изменения данных MySQL Sheet Data Общие SQL синтаксис:
UPDATE table_name SET field1=new-value1, field2=new-value2
- Вы можете обновить одно или несколько полей одновременно.
- Можно указать любое условие в предложении WHERE.
- Можно также обновить данные в отдельной таблице.
Когда вам нужно обновить данные, указанные в строках таблицы ИНЕКЕ очень полезно.
Командной строки, чтобы обновить данные
Ниже мы будем обновлять w3big_tbl указанные в таблице данных с помощью команды SQL UPDATE ИНЕКЕ:
примеров
В следующем примере будет обновлять таблицу данных в качестве w3big_title w3big_id значения поля 3:
# mysql -u root -p password; Enter password:******* mysql> use w3big; Database changed mysql> UPDATE w3big_tbl -> SET w3big_title="Learning JAVA" -> WHERE w3big_id=3; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql>Используйте PHP скрипт для обновления данных
PHP функция для использования mysql_query () для выполнения операторов SQL, вы можете использовать оператор UPDATE SQL или ИНЕКЕ не применяется.
Эта функция в MySQL> командной строки эффект выполнения операторов SQL то же самое.
примеров
В следующем примере будет обновлять данные w3big_id поле w3big_title 3.