MySQLのクエリの基本型:insert, update, deleteなど
insert, update, deleteなどの基本や、まとめてinsert(バルクインサート)など
作成日:2017-12-05, 更新日:2023-05-08
insert文
insert into テーブル (カラムA, カラムB) values (値A, 値B)
複数(バルクインサート)
insert into テーブル (カラムA, カラムB) values (値1-A, 値1-B), (値2-A, 値2-B)
update文
update テーブル名 set カラムA=値A, カラムB=値B where id=〇〇
delete文
delete from テーブル where id=〇〇
▼全データ削除(where句無し)
delete from テーブル
その他
仮想テーブル(テーブル構造)作成
create temporary table テーブル名 like コピー元テーブル名;
バルクアップデート
そんな便利なクエリは無いっぽい。
流れとしては下記のような方法。
・対象テーブルと同じ構造で仮想テーブル作成
・仮想テーブルに対象レコードのアップデート後のデータを追加
・対象テーブルと仮想テーブルをくっつけてアップデート。
▼対象テーブルと仮想テーブルをくっつけてアップデート
update テーブル名 inner join 仮想テーブル名 on テーブル名.カラム=仮想テーブル名.カラム set テーブル名.カラムA=仮想テーブル名.カラムA , テーブル名.カラムB=仮想テーブル名.カラムB;
バルクアップデートの注意
仮想テーブルを作成すると、トランザクションでロールバックされない・・・。
「トランザクションのコミットはしないけど、ロールバックもしない」らしい。
詳しくは「MySQL 13.3.3 暗黙的なコミットを発生させるステートメント」。