sql >> データベース >  >> RDS >> Mysql

MySQLデータベースのデータを更新する

    このページでは、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;

    結果:


    1. Ansibleを使用したPostgreSQLレプリケーションのセットアップとメンテナンス

    2. ウィンドウ関数または共通テーブル式:範囲内の前の行をカウントします

    3. SQLのグループ化と合計の概要

    4. Kubernetesを使用したProxySQLネイティブクラスタリング