Синтаксис UPDATE. Синтаксис UPDATE Mysql update синтаксис
В этом учебном пособии вы узнаете, как использовать 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 .
Команда UPDATE — производит изменения в уже существующей записи или во множестве записей в таблице SQL . Изменяет существующие значения в таблице или в основной таблице представления.
Команда UPDATE Синтаксис команды
Синтаксис команды UPDATE
Команда UPDATE. Основные ключевые слова и параметры команды UPDATE
- schema - идентификатор полномочий, обычно совпадающий с именем некоторого пользователя
- table view - имя таблицы SQL , в которой изменяются данные; если определяется представление, данные изменяются в основной таблице SQL представления
- subquery_1 - подзапрос , который сервер обрабатывает тем же самым способом как представление
- с olumn - столбец таблицы SQL или представления SQL , значение которого изменяется; если столбец таблицы из предложения SET опускается, значение столбца остается неизменяемым
- expr - ; это выражение может содержать главные переменные и необязательные индикаторные переменные
- subquery _2 - новое значение, назначаемое соответствующему столбцу
- subquery _3 - новое значение, назначаемое соответствующему столбцу
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
Поясняет использование следующих синтаксических конструкций команды :
- Обе формы предложения SET вместе в одном утверждении.
- Подзапрос.
- Предложение WHERE, ограничивающее диапазон модифицируемых строк.
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’);
Вышеупомянутое утверждение выполняет следующие операции:
- Модифицирует только тех служащих, кто работают в Dallas или Detroit
- Устанавливает значение колонки deptno для служащих из Бостона
- Устанавливает жалованье каждого служащего в 1.1 раз больше среднего жалованья всего отдела
- Устанавливает комиссионные каждого служащего в 1.5 раза больше средних комиссионных всего отдела
Если нам нужно изменить или обновить данные в 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.
UPDATE tbl_name SET col_name1=expr1 [, col_name2=expr2, ...]
Оператор UPDATE обновляет столбцы в соответствии с их новыми значениями в строках существующей таблицы. В выражении SET указывается, какие именно столбцы следует модифицировать и какие величины должны быть в них установлены. В выражении WHERE , если оно присутствует, задается, какие строки подлежат обновлению. В остальных случаях обновляются все строки. Если задано выражение ORDER BY , то строки будут обновляться в указанном в нем порядке.
Если указывается ключевое слово LOW_PRIORITY , то выполнение данной команды UPDATE задерживается до тех пор, пока другие клиенты не завершат чтение этой таблицы.
Если указывается ключевое слово IGNORE , то команда обновления не будет прервана, даже если при обновлении возникнет ошибка дублирования ключей. Строки, из-за которых возникают конфликтные ситуации, обновлены не будут.
Если доступ к столбцу из указанного выражения осуществляется по аргументу tbl_name , то команда UPDATE использует для этого столбца его текущее значение. Например, следующая команда устанавливает столбец age в значение, на единицу большее его текущей величины:
Mysql> UPDATE persondata SET age=age+1;
Значения команда UPDATE присваивает слева направо. Например, следующая команда дублирует столбец age , затем инкрементирует его:
Mysql> UPDATE persondata SET age=age*2, age=age+1;
Если столбец устанавливается в его текущее значение, то MySQL замечает это и не обновляет его.
Команда UPDATE возвращает количество фактически измененных строк. В версии MySQL 3.22 и более поздних функция C API mysql_info() возвращает количество строк, которые были найдены и обновлены, и количество предупреждений, имевших место при выполнении UPDATE .
В версии MySQL 3.23 можно использовать LIMIT # , чтобы убедиться, что было изменено только заданное количество строк.
Синтаксис 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 для автоматического обновления связанных таблиц.