SQLでカラムを一括して更新したい
MySQLのWorkbenchでの操作方法
失敗例
データベース名test、テーブル名users、カラム名nameにおいて、全てのusersのnameを「野獣先輩」にしたい場合は以下のSQL文を実行します。
UPDATE test.users SET name = "野獣先輩"
しかし、このまま実行すると、Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferencesのエラーが返されます。これは、大量のupdateやdeleteをワークベンチから行えない様にMySQLが制約を付けてくれているためです。
解決方法
この場合、以下のように、SET SQL_SAFE_UPDATES = 0;をつけてからUPDATEを実行すると成功します。SQLを実行するときは、雷のアイコンを押下します。安全のために、SET SQL_SAFE_UPDATES = 1;に戻しておくと良いでしょう。
SET SQL_SAFE_UPDATES = 0;
UPDATE test.users SET name = "野獣先輩"
SET SQL_SAFE_UPDATES = 1;
SELECT * FROM test.users;

usersテーブルの全てのnameが「野獣先輩」に更新されました。ヨシ!
カラムが空欄の場合、カラムを一括して別の値を代入するSQL文
SET SQL_SAFE_UPDATES = 0;
UPDATE test.users SET name = "野獣先輩" WHERE sickle = "";
SET SQL_SAFE_UPDATES = 1;
SELECT * FROM test.users;
この処理は間違えて実行すると、レコードが大量にある場合、修復がが不可能になるのでバックアップをとっておいてから実行した方が良いと思われる。
MySQLのWorkbenchのページ一覧
・Workbench入門
・Workbenchでcsvをインポートする方法
・MySQLのWorkbenchでカラムの順番を変更する
・SQLでカラムを一括して更新したい
・Workbenchで自動でコミットしない方法
・MySQLで更新するデータに別の列の値を使用する
・Workbenchでboolean型のカラムを追加するとtinyint型に変えられてしまう
・Workbenchでデータベースをimportする
