Sintaxe UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] nome_tabela SET nome_coluna1=expr1 [, nome_coluna2=expr2 ...] [WHERE definição_where] [ORDER BY ...] [LIMIT row_count] ou UPDATE [LOW_PRIORITY] [IGNORE] nome_tabela [, nome_tabela ...] SET nome_coluna1=expr1 [, nome_coluna2=expr2 ...] [WHERE definição_where]
UPDATE atualiza uma coluna em registros de tabelas existentes com novos valores. A cláusula SET indica quais colunas modificar e os valores que devem ser dados. A cláusula WHEREi, se dada, especifica quais linhas devem ser atualizadas. Senão todas as linhas são atualizadas. Se a cláusula ORDER BY é especificada, as linhas serão atualizada na ordem especificada. Se você especificar a palavra-chave
LOW_PRIORITY, a execução de UPDATE e atrasada até que nenhum outro cliente esteja lendo da tabela. Se você especificar a palavra-chave
IGNORE, a instrução não será abortada memso se nós obtermos erros de chaves duplicadas durante a atualização. Linhas que causem conflitos não serão atualizadas. Se você acessa um coluna de
nome_tabela em uma expressão, UPDATE utiliza o valor atual da coluna. Por exemplo, a seguinte instrução define a coluna age com o valor atual mais um: mysql> UPDATE persondata SET age=age+1;
Atribuiçãoes UPDATE são avaliadas da esquerda para a direitat. Por exemplo, a seguinte instrução dobra a coluna age e então a incrementa: mysql> UPDATE persondata SET age=age*2, age=age+1;
Se você define uma coluna ao valor que ela possui atualmente, o MySQL notará isto é não irá atualizá-la. UPDATE retorna o número de linhas que forma realmente alteradas. No MySQL Versão 3.22 ou posterior, a função mysql_info() da API C retorna o número de linhas encontradas e atualizadas e o número de avisos que ocorreram durante o UPDATE. A partir do MySQL versão 3.23, você pode utilizar
LIMIT row_count para restringir o escopo do UPDATE. Uma cláusula LIMIT funciona da seguinte forma: - Antes do MySQL 4.0.13,
LIMITé uma restrição que afeta as linhas. A instrução para assim que alterarow_countlinhas que satisfaçam a cláusulaWHERE. - Da versão 4.0.13 em diante,
LIMITé uma restrição de linhas correspondentes. A instrução para assim que ela encontrarrow_countlinhas que satisfaçam a cláusulaWHERE, tendo elas sido alteradas ou não.
ORDER BY é utilizada (disponível no MySQL 4.0.0), as linhas serão atualizadas nesta ordem. Isto só é util em conjunto com LIMIT. A partir da MySQL Versão 4.0.4, você também pode realizar operações
UPDATE que cobrem múltiplas tabelas: UPDATE items,month SET items.price=month.price WHERE items.id=month.id;O exemplo mostra um inner join usando o operador de vírgula, mas instruções
UPDATE multi-tabelas podem usar qualquer tipo de join permitida na instrução SELECT, como LEFT JOIN. Nota: você não pode utilizar
ORDER BY ou LIMIT com multi-tabelas UPDATE.