Skip to content

Введение в оператор UPDATE в MySQL

Пересказ статьи Robert Sheldon. Introducing the MySQL UPDATE statement


Оператор UPDATE позволяет изменять значения в таблицах базы данных, включая временные таблицы. С помощью единственного оператора вы можете обновить одну или более строк, один или более столбцов, или любую их комбинацию. Вы можете даже обновить несколько таблиц. Проработав эту статью вы узнаете, что оператор UPDATE прост и интуитивно понятен, если усвоить основы его работы.


Подготовка среды MySQL


Для примеров этой статьи я использовал ту же самую базу данных (travel) и таблицы (manufacturers и airplanes), которые применялись в нескольких последних статьях этой серии.

Замечание. Примеры предполагают, что вы проработали предыдущую статью. В этом случае база данных travel уже должна быть установлена и готова для работы. Если нет, вы также можете использовать примеры данной статьи, только имейте в виду, что результаты ваших запросов могут несколько отличаться от приведенных здесь.

Для установки базы данных travel - если вы этого еще не сделали - загрузите файл MySQL_06_setup.sql и выполните скрипт SQL на экземпляре MySQL. Скрипт создает базу данных, таблицы и вставляет в них тестовые данные. В качестве альтернативы, вы можете создать базу данных, а затем выполнить следующий скрипт для создания таблиц manufacturers и airplanes:

CREATE TABLE manufacturers (
manufacturer_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
manufacturer VARCHAR(50) NOT NULL,
create_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_update TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (manufacturer_id) )
ENGINE=InnoDB AUTO_INCREMENT=1001;

CREATE TABLE airplanes (
plane_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
plane VARCHAR(50) NOT NULL,
manufacturer_id INT UNSIGNED NOT NULL,
engine_type VARCHAR(50) NOT NULL,
engine_count TINYINT NOT NULL,
max_weight MEDIUMINT UNSIGNED NOT NULL,
wingspan DECIMAL(5,2) NOT NULL,
plane_length DECIMAL(5,2) NOT NULL,
parking_area INT GENERATED ALWAYS
AS ((wingspan * plane_length)) STORED,
icao_code CHAR(4) NOT NULL,
create_date TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP,
last_update TIMESTAMP NOT NULL
DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (plane_id),
CONSTRAINT fk_manufacturer_id
FOREIGN KEY (manufacturer_id)
REFERENCES manufacturers (manufacturer_id) )
ENGINE=InnoDB AUTO_INCREMENT=101;

Затем вам нужно добавить данные в таблицы manufacturers и airplanes для поддержки примеров в этой статье. Начните с таблицы manufacturers, выполнив следующий оператор INSERT, который добавит производителя Beagle Aircraft Limited:

INSERT INTO manufacturers (manufacturer)
VALUES ('Beagle Aircraft Limited');
SELECT manufacturer_id
FROM manufacturers
WHERE manufacturer = 'Beagle Aircraft Limited';

После вставки данных оператор SELECT возвращает вновь добавленное значение из столбца manufacturer_id. Если вы следовали в точности последней паре статей, то значение будет равно 1008. Если нет, отметьте для себя значение manufacturer_id, которое вы получите, поскольку оно вам понадобится далее в статье, начиная со следующего оператора INSERT:

INSERT INTO airplanes 
(plane, manufacturer_id, engine_type, engine_count,
wingspan, plane_length, max_weight, icao_code)
VALUES
('A.61 Terrier',1008,'piston',1,36,23.25,2400,'AUS6'),
('B.121 Pup',1008,'piston',1,31,23.17,1600,'PUP'),
('B.206',1008,'piston',2,55,33.67,7500,'BASS'),
('D.4-108',1008,'piston',1,36,23.33,1900,'D4'),
('D.5-108 Husky',1008,'piston',1,36,23.17,2400,'D5');

Если необходимо, замените значение 1008 на ваше значение manufacturer_id и выполните этот оператор. Сделав это, вы должны быть готовы следовать примерам из данной статьи. Однако имейте в виду, что ряд следующих примеров ссылается на столбец Manufacturer_id, поэтому, если значение в вашей системе не равно 1008, обязательно используйте правильное значение.

Синтаксис оператора UPDATE


Оператор UPDATE в MySQL поддерживает 5 предложений, два из которых являются обязательными, а три - необязательными, что отмечено в следующем синтаксисе:

UPDATE [IGNORE] table_name
SET column = value [, column = value]...
[WHERE where_condition]
[ORDER BY order_list]
[LIMIT row_count]

Этот синтаксис включает не все элементы оператора UPDATE, но представляет их большинство. Это те, которые вы будете использовать большую часть времени, не только при изучении этого оператора, но также и после его освоения. Полный синтаксис оператора UPDATE вы найдете в документации MySQL.
Вот объяснение этих пяти предложений:

  • Предложение UPDATE, одно из двух обязательных предложений, задает таблицу, которая является целью обновления. Вы можете указать несколько таблиц в этом предложении, разделив их запятыми, но я в этой статье сфокусируюсь на обновлениях одной таблицы. Я оставлю тему обновления нескольких таблиц для более продвинутых статей.

  • Предложение SET, другое обязательное предложение, определяет обновляемые столбцы. Вы можете включить задания для одного или более столбцов. Для каждого задания указывается имя столбца, знак равенства и новое значение. Если включены несколько заданий, разделяйте их запятыми.

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

  • Предложение ORDER BY задает порядок, в котором должны обновляться строки. Это может использоваться в ситуациях, которые в противном случае могут привести к ошибке, как вы увидите далее в статье. Предложение ORDER BY подобно аналогичному предложению в операторе SELECT. Это предложение не может использоваться для обновления нескольких таблиц.

  • Предложение LIMIT ограничивает число строк, которые будут обновляться. Если включено предложение WHERE, количество применяется к строкам, возвращаемым этим предложением. Это означает, что оператор оперирует теми строками, которые удовлетворяют условиям WHERE, вне зависимости от того, были ли эти строки фактически обновлены. Как и в случае предложения ORDER BY, предложение LIMIT не может использоваться для обновления нескольких таблиц.


С этими пятью предложениями вы можете построить разнообразные операторы UPDATE. По большей части вы будете использовать предложения UPDATE, SET и WHERE, хотя предложения ORDER BY и LIMIT тоже могут иногда пригодиться.

Когда вы увидите этот оператор в действии, у вас не должно возникнуть проблем с пониманием того, как эти предложения работают, и использованием их для обновления данных. На самом деле, обновлять данные очень просто, но если вы не будете осторожны, можно натворить много бед. Модификацию данных может оказаться сложно отменить, поэтому необходимо действовать осторожно, особенно когда вы только начали изучение оператора UPDATE. Конечно, не следует практиковаться в производственной базе. Если вы выполняете обновление в производственной среде, убедитесь, что вы делаете это в рамках транзакции, о чем я собираюсь рассказать далее в этой серии.

Выполнение базового обновления в MySQL


Пора посмотреть оператор UPDATE в действии, чтобы вы почувствовали, как он работает. Как я уже говорил, только предложения UPDATE и SET являются обязательными, поэтому с них и начнем.

Предположим, что вы хотите округлить все значения в столбце wingspan таблицы airplanes до целых чисел. Чтобы добиться этого, создадим следующий оператор UPDATE:

UPDATE airplanes
SET wingspan = ROUND(wingspan);

Предложение UPDATE задает airplanes в качестве целевой таблицы, а предложение SET указывает, что значения в столбце wingspan должны округляться, что достигается при использовании встроенной функции ROUND.

Это все, что требуется для обновления данных wingspan. Однако есть большая вероятность, что при попытке запустить этот оператор вы получите следующую ошибку:

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
(Вы используете безопасный режим обновления пытались обновить таблицу без предложения WHERE, которое использует КЛЮЧЕВОЙ столбец. Для отключения безопасного режима переключите опцию в Preferences -> SQL Editor и соединитесь повторно.)


По умолчанию вы не можете выполнить обновление без предложения WHERE, которое задает ключевой столбец. Это помогает гарантировать, что вы не внесете радикальные изменения, о которых потом будете жалеть. Вы можете отключить безопасный режим (как предлагается в сообщении об ошибке) либо на постоянной основе, либо временно. Я рекомендую это делать временно, чтобы избежать нежелательных изменений когда-либо впоследствии.

Для временного отключения безопасного режима используйте оператор SET для установки системной переменной SQL_SAFE_UPDATES в значение 0 до выполнения оператора UPDATE, а затем установки переменной в 1 после выполнения оператора, как показано в следующем примере:

SET SQL_SAFE_UPDATES = 0;
UPDATE airplanes
SET wingspan = ROUND(wingspan);
SET SQL_SAFE_UPDATES = 1;

Операторы SET просто переключают переменную во время текущей сессии. Однако имейте в виду, что оператор SET поддерживает опцию GLOBAL, которая устанавливает переменную на глобальном уровне. Возьмите за правило не использовать этот параметр при отключении безопасных обновлений. Гораздо менее рискованно использовать этот тип изменений на уровне сессии, чтобы избежать незапланированных несчастных случаев. Используйте GLOBAL, только если это важно в ваших обстоятельствах.

Более подробно о SET, глобальных переменных и настройках читайте в документации MySQL.

Даже на сессионном уровне оператор SET делает возможным выполнение оператора UPDATE без генерации ошибки. Подтвердить изменения после выполнения скрипта выше можно с помощью простого оператора SELECT:

SELECT * FROM airplanes;

На рисунке 1 показаны результаты, возвращаемые оператором SELECT. Обратите внимание, что значения wingspan теперь являются целыми числами.


Рис.1. Округление значений в столбце wingspan

В некоторых случаях вам может потребоваться обновить несколько столбцов одновременно. Для этого вам нужно добавить задания для этих столбцов, разделяя их запятыми. Например, следующий оператор UPDATE модифицирует оба столбца wingspan и plane_length:

SET SQL_SAFE_UPDATES = 0;
UPDATE airplanes
SET wingspan = ROUND(wingspan), plane_length = ROUND(plane_length);
SET SQL_SAFE_UPDATES = 1;

Задания для обоих столбцов работают одинаково. Вы просто округляете значения столбца до целых чисел. Если запросить таблицу airplanes после выполнения оператора UPDATE, ваши результаты должны выглядеть подобно показанным на рис.2.


Рис.2. Округление значений в столбцах wingspan и plane_length

Используя предложения UPDATE и SET, вы можете быстро обновить все значения столбца. Просто будьте осторожны, если используете этот подход. Слишком легко все испортить.

Добавление предложения WHERE в оператор UPDATE


Большинство ваших операторов UPDATE будут, вероятно, включать предложение WHERE, чтобы помочь вам лучше определить данные, подлежащие изменению. Предложение WHERE задает одно или более условий, которые сужают объем обновляемых строк. Например, следующий оператор включает предложение WHERE, которое ограничивает обновляемые строки значением 1008 в столбце manufacturer_id:

UPDATE airplanes
SET engine_type = 'piston (adg-i)'
WHERE manufacturer_id = 1008;
SELECT *
FROM airplanes
WHERE manufacturer_id = 1008;

Предложение SET в этом операторе устанавливает engine_type в значение "piston (adg-i)" для целевых строк. Результаты выполнения оператора должны выглядеть как на рис.3.


Рис.3. Ограничение обновления заданными строками

Замечание: Если вам интересно, значение adg-i - это ссылка на классификацию Airplane Design Group (ADG), систему, используемую для классификации самолетов, подразделяя их на шесть групп на базе размаха крыльев и высоты хвоста. i в нижнем регистре означает, что самолеты в этом примере относятся к Группе I. (Я понимаю, что вы, вероятно, захотите добавть столбец для групп ADG. Подход, который я использовал здесь, предназначался только для демонстрации этих концепций.)

Таким образом, оказывается, что аэроплан B.206 должен фактически быть в Группе II, и значит нам нужно обновить эту запись без обновления остальных. К счастью, вы можете определять несколько условий в предложении WHERE, чтобы сократить число строк. В следующем примере предложение WHERE включает два условия, одно для столбца manufacturer_id, а другое - для столбца plane.

UPDATE airplanes
SET engine_type = 'piston (adg-ii)'
WHERE manufacturer_id = 1008 AND plane = 'B.206';

Как в предыдущем примере, предложение WHERE ограничивает обновление строками, для которых значение manufacturer_id равно 1008. Однако это предложение также указывает, что значение plane должно равняться B.206. Два условия связываются логическим оператором AND, который означает, что оба условия должны быть истинны для обновляемых строк.

После выполнения оператора UPDATE вы можете опять вывести эти строки. Ваши результаты должны быть похожи на представленные на рис.4. Обратите внимание, что самолет B.206 теперь представлен в группе Group II.


Рис.4. Ограничение обновления одной заданной строкой

Вы можете сделать предложение WHERE настолько детальным, чтобы гарантировать обновление целевых строк и никаких больше. Для этого используйте ваши логические операторы корректно, чтобы гарантировать точную логику условных выражений.

Работа с значениями столбца


В первом примере этой статьи вы видели, как использовать системную функцю ROUND для округления значений в таблице airplanes. Когда вы обновляете столбец этим способом, MySQL использует текущее значение для создания нового значения. Способность использовать текущее значение делает возможным построить на этом значении новое способами, выходящими за пределы простого применения функции. Например, следующий оператор UPDATE добавит 3 к значению wingspan и 5 к значению plane_length:

UPDATE airplanes 
SET wingspan = wingspan + 3, plane_length = plane_length + 5
WHERE plane_id = 344;

В этом случае я использовал значение plane_id = 344 в предложении WHERE, которое мне пришлось искать в таблице. Однако вы могли бы использовать другой метод для нахождения этого значения, например, выбрать его с помощью подзапроса, что я планирую рассмотреть далее в этой серии.

После выполнения этого оператора вы можете выполнить запрос к таблице airplanes для проверки результатов, которые должны быть похожи на представленные на рис.5.


Рис.5. Увеличение значений в столбцах wingspan и plane_length

Если вы сравните рисунки 5 и 4, то увидите, что строка со значением plane_id = 344 была обновлена. Вы можете также заметить, что MySQL автоматически обновила столбец parking_area, который является генерируемым столбцом, перемножающим значения wingspan и plane_length.

Если вы попытаетесь обновить столбец на то же самое значение, которое уже есть, MySQL окажется достаточно умен, чтобы понять это и не менять исходное значение. Такой подход может потенциально уменьшить бесполезную нагрузку и минимизировать воздействие на конкурирующие операции, которые могут пытаться извлечь или модифицировать это значение в то же самое время. MySQL также понимает, когда вы пытаетесь вставить неприемлемое значение в столбец. Например, следующий оператор UPDATE пытается изменить значение столбца engine_type на NULL:

UPDATE airplanes SET engine_type = NULL WHERE plane_id = 344;

Поскольку столбец определен как NOT NULL, оператор UPDATE потерпит неудачу и сгенерирует следующую ошибку:

Error Code: 1048. Column 'engine_type' cannot be null
(столбец 'engine_type' не может быть null)


Вы также получите ошибку, если попытаетесь обновить столбец значением некорректного типа данных. Например, следующий оператор UPDATE пытается обновить столбец max_weight на строковое значение unknown:

UPDATE airplanes
SET max_weight = 'unknown'
WHERE plane_id = 344;

Неудивительно, что этот оператор также не будет выполнен, поскольку столбец max_weight определен с типом данных MEDIUMINT. Вместо обновления MySQL вернет следующую ошибку:

Error Code: 1366. Incorrect integer value: 'unknown' for column 'max_weight' at row 1
(Некорректное целое значение: 'unknown' для столбца 'max_weight' в строке 1)


Как и в случае вставки данных, для обновления данных вам следует иметь информацию о целевых столбцах, которые вы пытаетесь обновить. Недостаточно знать только тип данных. Вы должны также понимать, как определен тип данных. Например, если вы попытаетесь обновить столбец icao_code строкой abcdef, будет генерироваться ошибка, поскольку столбец определен как CHAR(4).

Обновление столбцов внешнего ключа в таблицах MySQL


У вас может появиться желание обновить значение в столбце внешнего ключа. Однако это может оказаться непросто, поскольку MySQL выполняет проверки внешнего ключа. Например, предположим, что вы хотите обновить столбец manufacturer_id в таблице airplanes:

UPDATE airplanes 
SET manufacturer_id = 2001
WHERE manufacturer_id = 1008;

Неудивительно, что MySQL заблокирует вашу попытку выполнить этот оператор и вернет вместо этого следующую ошибку (если вы не добавили ключевое слово IGNORE):

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`travel`.`airplanes`, CONSTRAINT `fk_manufacturer_id` FOREIGN KEY (`manufacturer_id`) REFERENCES `manufacturers` (`manufacturer_id`))
(Невозможно добавить или изменить дочернюю строку: нарушение ограничения внешнего ключа)


Вы не можете обновить внешний ключ значением, которого не существует в ссылочном столбце. Вы должны сначала внести необходимые изменения в родительскую таблицу. Однако это тоже может оказаться затруднительным. Например, вы могли бы попытаться обновить значение manufacturer_id в таблице manufacturers:

UPDATE manufacturers 
SET manufacturer_id = 2001
WHERE manufacturer_id = 1008;

К сожалению, это приведет к тому, что MySQL опять сгенерирует ошибку, поскольку вы не можете обновить значение, на которое ссылается внешний ключ:

Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`travel`.`airplanes`, CONSTRAINT `fk_manufacturer_id` FOREIGN KEY (`manufacturer_id`) REFERENCES `manufacturers` (`manufacturer_id`))
(Нельзя удалить или обновить родительскую строку: нарушено ограничение внешнего ключа.)


Вы можете обойти эти проблемы, временно отключив проверки внешнего ключа в пределах сессии (или установив опцию CASCADE для внешнего ключа, о чем я буду говорить в последующей статье). Для этого установите системную переменную foreign_key_checks в значение 0 перед выполнением оператора UPDATE, а затем установите ее обратно в значение 1 после выполнения операторов:

SET foreign_key_checks = 0;
UPDATE manufacturers
SET manufacturer_id = 2001
WHERE manufacturer_id = 1008;
UPDATE airplanes
SET manufacturer_id = 2001
WHERE manufacturer_id = 1008;
SET foreign_key_checks = 1;

Таким образом вы можете обновить значения manufacturer_id в обеих таблицах без возникновения ошибок внешнего ключа. В качестве напоминания скажу, избегайте использования опции GLOBAL в ваших операторах SET. Если выключить проверки внешнего ключа на глобальном уровне, вы рискуете нарушить целостность ваших данных.

После выполнения этих операторов вы можете сделать запрос к таблице manufacturers, чтобы проверить выполненные изменения:

SELECT * FROM manufacturers WHERE manufacturer_id = 2001;

На рисунке 6 показаны данные, возвращаемые этим оператором. Как видно, таблица была обновлена без проблем, в частности, потому что вы задали новое значение первичного ключа, которого еще не существовало.


Рис.6. Обновление таблицы manufacturers

Вы можете также запросить таблцу airplanes, чтобы проверить, что строки были правильно обновлены:

SELECT * FROM airplanes WHERE manufacturer_id = 2001;


На рисунке 7 показаны результаты, возвращаемые запросом. Как и ожидалось, значения manufacturer_id были обновлены для всех целевых строк.


Рис.7. Обновление столбца manufacturer_id в таблице airplanes

Вероятно, вам не придется обновлять столбцы внешнего ключа слишком часто, но важно понимать, во что это выливается, если случится. Просто знайте, что имеются и другие проблемы, о которых стоит беспокоиться, например, не пытаться вставить повторяющиеся значения первичных ключей.

Обновление столбцов первичного ключа в таблицах MySQL


Как и в случае внешних ключей, вам может иногда понадобиться обновить значения в столбце первичного ключа. Если вы обновляете единственное значение (как в случае выше), то обычно проблем не возникает, коль скоро новое значение удовлетворяет требованиям столбца. Однако все становится сложнее, если одновременно обновляются несколько значений. Например, следующий оператор UPDATE пытается добавить 1 ко всем значениям plane_id в строках, для которых значение manufacturer_id равно 2001:

UPDATE airplanes 
SET plane_id = plane_id + 1
WHERE manufacturer_id = 2001;

Оператор имеет хороший шанс завершиться неудачно из-за порядка, в котором MySQL обновляет каждую строку данных (поскольку вы не можете делать никаких предположений о порядке, который ядро базы данных выберет при обновлении данных). Это связано с тем, что MySQL пытается обновить исходное значение на значение, которое уже существует и само ожидает обновления. Например, если MySQL пытается обновить первую строку с 342 на 343 перед обновлением второй строки, то оператор завершится неудачно, и MySQL вернет следующую ошибку:

Error Code: 1062. Duplicate entry '343' for key 'airplanes.PRIMARY'
(дубликат записи 343 для ключа 'airplanes.PRIMARY')


У вас может возникнуть соблазн включить ключевое слово IGNORE, чтобы попытаться обойти эту проблему:

UPDATE IGNORE airplanes 
SET plane_id = plane_id + 1
WHERE manufacturer_id = 2001;

Ключевое слово IGNORE дает указание MySQL вернуть предупреждение, а не ошибку, и продолжить, а не остановить, выполнение оператора. В этом случае вы, вероятно, получите четыре предупреждения и сообщение, что одна строка была успешно обновлена:

1 row(s) affected, 4 warning(s):
1062 Duplicate entry '343' for key 'airplanes.PRIMARY'
1062 Duplicate entry '344' for key 'airplanes.PRIMARY'
1062 Duplicate entry '345' for key 'airplanes.PRIMARY'
1062 Duplicate entry '346' for key 'airplanes.PRIMARY'
Rows matched: 5 Changed: 1 Warnings: 4


Если обратиться к таблице airplanes, то можно увидеть, что только последняя строка была обновлена, что видно на рисунке 8. Это объясняется тем, что только последняя строка не пыталась обновить первичный ключ существующим значением.


Рис.8. Использование опции IGNORE при обновлении столбца plane_id

Лучшим решением будет включить предложение ORDER BY, которое сортирует строки по значениям plane_id в убывающем порядке:

UPDATE airplanes 
SET plane_id = plane_id + 1
WHERE manufacturer_id = 2001
ORDER BY plane_id DESC;

Когда вы включаете ORDER BY таким образом, MySQL применяет обновление, начиная с последней строки, позволяя инкрементировать значения на 1 без возникновения ошибок или предупреждений.

На рисунке 9 показаны данные после выполнения оператора UPDATE.


Рис.9. Добавление предложения ORDER BY в оператор UPDATE

Вероятно, вам не очень часто потребуется использовать предложение ORDER BY, но это может оказаться весьма полезным.

В этом смысле похоже ведет себя другое предложение - LIMIT, - которое ограничивает число обновляемых строк. Например, следующий оператор обновления ограничивает число строк значением 3:

UPDATE airplanes 
SET plane_id = plane_id + 1
WHERE manufacturer_id = 2001
ORDER BY plane_id DESC
LIMIT 3;

Поскольку оператор UPDATE также содержит предложение ORDER BY, три обновляемых строк следуют снизу вверх. На рисунке 10 показаны результаты запроса к таблице после обновления.


Рис.10. Добавление предложения LIMIT в оператор UPDATE

Я полагаю, что вы не очень часто будете включать предложение LIMIT в операторы UPDATE (если вообще будете), но могут возникнуть ситуации, когда вы сочтете это полезным. Например, вы захотите протестировать оператор UPDATE, который предположительно должен модифицировать большое число строк. Включение предложения LIMIT во время тестирования оператора сократит время на обработку, чтобы проверить правильность работы оператора.

Работа с оператором UPDATE в MySQL


Оператор UPDATE является одним из наиболее часто используемых при работе с даными в MySQL. В большинстве случаев вы ограничитесь предложениями UPDATE, SET и WHERE. Иногда вы можете отказаться от предложения WHERE - на свой страх и риск - а иногда вы можете сочетать его с предложением ORDER BY или LIMIT (или обоми). Однако основная масса ваших обновлений, вероятно, будет ограничиваться тремя основными предложениями.

Независимо от используемых предложений вам нужно понимать, как они работают, чтобы гарантировать наиболее эффективную модификацию данных при точности обновления. К счастью, оператор UPDATE довольно прост для понимания, поэтому у вас не должно возникнуть проблем с его применением.

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

No comments

The author does not allow comments to this entry

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Submitted comments will be subject to moderation before being displayed.