Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Atualizar dados em um banco de dados MySQL


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: