ラボ > MySQL:基本構文

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 暗黙的なコミットを発生させるステートメント」。

関連項目