このページでは、MySQLデータベースの既存のデータを更新する方法について説明します。
したがって、データベースにはすでにデータが追加されています。しかし今、私たちのデータには間違いが含まれていることに気づきました。リンゴには
UnitId
が割り当てられています 1
の —ただし、これは2
である必要があります 。
あなたはここでこれを見ることができます:
問題ない。そのレコードを更新するだけです。
UPDATE
ステートメント
SQL UPDATE
ステートメントを使用すると、データベース内のデータを更新できます。このステートメントを使用して、ユニットIDを1
から変更できます。 2
へ 。これを行うには、WHERE
を使用します 更新する必要のある正確なレコードを指定する句。このように:
UPDATE Fruit SET UnitId = 2 WHERE FruitId = 1;
通常、UPDATE
を実行する場合に推奨されます 操作。更新しようとしているレコードのIDフィールド(またはその主キーが何であれ)を指定します。これは、誤って間違ったレコードを更新するのを防ぐのに役立ちます。この例では、リンゴにFruitId
があることがわかりました。 1
の 。ただし、更新しようとしているレコードのIDが常にわかっているとは限りません。その場合、次のようなことができます:
UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple' AND UnitId = 1;
SELECT
でどちらかをフォローアップできます ステートメントと結果は次のとおりです:
DateUpdated に注意してください その列の更新を指定しなかったにもかかわらず、列も更新されました。これは、テーブルを作成したときに、レコードが更新されるたびにその列が現在の日時で更新されるように設定したためです。
その列を作成したときに使用したコードは次のとおりです。
DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
具体的には、ON UPDATE CURRENT_TIMESTAMP
その結果、UPDATE
を実行したときに列が更新されました。 ステートメント。
安全な更新
UPDATE
も簡単に作成できます。 このようなコマンド( AND UnitId = 1
なし ):
UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple';
ただし、これを実行しようとすると、次のエラーが発生する可能性があります。
セーフアップデートモード
上記のエラーが発生した場合は、MySQL接続がセーフアップデートモードで実行されていることが原因です。これにより、大量のデータを誤って上書きすることを防ぐことができます。実際、WHERE
を含めるのを忘れた場合 テーブル内のすべてのレコードを更新したはずの句!
はい、次のコードを実行すると、テーブル内のすべてのレコードが Banana に更新されます。 :
UPDATE Fruit SET FruitName = 'Banana'
したがって、セーフアップデートモードで実行することで得られる本当のメリットがあります。
ただし、本当にそのクエリを実行する必要がある場合(または、すべての果物が実際にバナナに変わった場合)は、次のいずれかを実行できます。
- クエリを変更して
KEY
を含めます 桁。このページの上部にある例でこれを行いました。 - セーフアップデートモードを無効にします。
安全な更新モードを無効にする
UPDATE
を実行する必要があることがわかった場合 KEY
を使用しない操作 フィールドでは、いつでもセーフアップデートモードを無効にできます。
安全な更新モードを無効にするには、UPDATE
を実行する前に次のコマンドを実行します ステートメント:
set sql_safe_updates = 0;
完了したら、設定を以前の状態に復元することをお勧めします。特に、このような広範囲に影響を与える可能性のある設定の場合はなおさらです。
セーフアップデートモードを有効にするには、次のコマンドを実行します。
set sql_safe_updates = 1;
実際、次のように、すべてを同時に実行できます。
set sql_safe_updates = 0; UPDATE Fruit SET UnitId = 2 WHERE FruitName = 'Apple'; select * from Fruit; set sql_safe_updates = 1;
複数のフィールドを更新
カンマを使用して各フィールドの割り当てを区切ることにより、複数のフィールドを更新できます。このように:
UPDATE Fruit SET FruitName = 'Red Grapes', Inventory = '11' WHERE FruitId = 5;
結果: