Esta página explica como atualizar dados existentes em um banco de dados MySQL.
Então, já adicionamos dados ao nosso banco de dados. Mas agora percebemos que nossos dados contêm um erro. As maçãs receberam um UnitId de
1
— mas deve ser 2
. Você pode ver isso aqui:
Sem problemas. Vamos apenas atualizar esse registro.
A UPDATE
Declaração
O SQL
UPDATE
declaração nos permite atualizar os dados em nosso banco de dados. Podemos usar esta instrução para alterar o ID da unidade de 1
para 2
. Para fazer isso, usamos o WHERE
cláusula para especificar o registro exato que precisamos atualizar. Assim:UPDATE Fruit SET UnitId = 2 WHERE FruitId = 1;
Geralmente, é aconselhável fazer um
UPDATE
operação, para especificar o campo de ID do registro que você está tentando atualizar (ou qualquer que seja sua chave primária). Isso ajuda a proteger contra a atualização acidental do(s) registro(s) errado(s). Neste exemplo, sabíamos que as maçãs tinham um FruitId
de 1
. Mas nem sempre você sabe o ID do registro que está tentando atualizar. Nesse caso você poderia fazer algo assim:UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple' AND UnitId = 1;
Podemos acompanhar qualquer um deles com um
SELECT
declaração e aqui está o resultado:Observe que o DateUpdated coluna também foi atualizada, embora não tenhamos especificado uma atualização para essa coluna. Isso porque, quando criamos a tabela, configuramos essa coluna para ser atualizada com a data/hora atual toda vez que houvesse uma atualização no registro.
Aqui está o código que usamos quando criamos essa coluna:
DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Mais especificamente, é o
ON UPDATE CURRENT_TIMESTAMP
que resultou na atualização da coluna agora mesmo quando executamos o UPDATE
demonstração. Atualizações seguras
Poderíamos facilmente ter construído nosso
UPDATE
comando como este (sem AND UnitId = 1
):UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple';
No entanto, você pode encontrar o seguinte erro se tentar fazer isso:
Modo de atualizações seguras
Se você encontrar o erro acima, é porque sua conexão MySQL está sendo executada no modo Safe Updates. Isso ajuda a evitar a substituição acidental de grandes quantidades de dados. Na verdade, se tivéssemos esquecido de incluir o
WHERE
cláusula, teríamos atualizado todos os registros da tabela! Sim, executar o código a seguir fará com que todos os registros em nossa tabela sejam atualizados para Banana :
UPDATE Fruit SET FruitName = 'Banana'
Portanto, há um benefício real a ser obtido ao executar no modo de atualizações seguras.
No entanto, se você realmente precisa executar essa consulta (ou se todas as suas frutas realmente se transformaram em bananas), você pode fazer o seguinte:
- Modifique sua consulta para incluir uma
KEY
coluna. Fizemos isso nos exemplos na parte superior desta página. - Desative o modo de atualizações seguras.
Desativar o modo de atualizações seguras
Se você achar que precisa executar um
UPDATE
operação sem usar uma KEY
campo, você sempre pode desativar o modo de atualizações seguras. Para desabilitar o modo de atualizações seguras, execute o seguinte comando antes de executar seu
UPDATE
demonstração:set sql_safe_updates = 0;
É sempre uma boa ideia restaurar a configuração para seu estado anterior quando terminar - especialmente com configurações que podem ter um impacto generalizado como este.
Para ativar o modo de atualizações seguras, execute o seguinte:
set sql_safe_updates = 1;
Na verdade, você pode executar tudo ao mesmo tempo, assim:
set sql_safe_updates = 0; UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple'; select * from Fruit; set sql_safe_updates = 1;
Atualizar vários campos
Você pode atualizar vários campos usando uma vírgula para separar cada atribuição de campo. Assim:
UPDATE Fruit SET FruitName = 'Red Grapes', Inventory = '11' WHERE FruitId = 5;
Resultado: