こんにちは、新人エンジニアの三上です。
今回は、SQLのDML作成時に気を付けたいポイントを紹介したいと思います。
DML
DMLというのはテーブルに対して
① 検索(SELECT)
② 更新(UPDATE)
③ 挿入(INSERT)
④ 削除(DELETE)
上記の操作を行う命令文のことです。
今回は ② 更新(UPDATE) の命令文作成時のポイントを記載したいと思います。
実際に、例を示しながら説明します。
UPDATE tmp_table SET tmp_column = 'change' WHERE
tmp_id IN (
'tmp1',
'tmp2',
'tmp3');
UPDATE文を使用するときは基本的にWHERE句によって更新対象のカラムを絞り込むと思います。
その際に上記のように、WHERE句とその対象のカラムを別の行に記載します。
そうすることで、誤って更新対象カラムを絞り込むことなくSQLが実行されるということを防ぐことが出来ます。
どういうことかというと、
① DML作成
② 作成したDMLから実行する命令文をコピー
③ ② でコピーした命令文を実行
② でコピーする際に、上で記載したUPDATE文の途中までしかコピーせずに
命令文を実行した場合、
UPDATE文として成立せず、実行前にエラーが起きます。
もし以下のUPDATE文で1行目のみをコピーして、命令文を実行した場合
テーブル内の全レコードに対して更新処理が行われることとなります。
このような事故を防ぐことが出来るのです。
UPDATE tmp_table SET tmp_column = 'change'
WHERE tmp_id IN ('tmp1','tmp2','tmp3');
まとめ
以上のように、WHERE句の位置を工夫するだけでSQL実行時の事故を防ぐことが出来ます。
SQL作成時には、実行する時に何の負担も気を付けることもないようなものを作成することを心がけるとよいと思います。
以上、三上でした。