0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SQL】DML 作成時の注意点

Posted at

こんにちは、新人エンジニアの三上です。

今回は、SQLのDML作成時に気を付けたいポイントを紹介したいと思います。

DML

DMLというのはテーブルに対して

① 検索(SELECT)
② 更新(UPDATE)
③ 挿入(INSERT)
④ 削除(DELETE)

上記の操作を行う命令文のことです。

今回は ② 更新(UPDATE) の命令文作成時のポイントを記載したいと思います。
実際に、例を示しながら説明します。

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文(悪い例)
UPDATE tmp_table SET tmp_column = 'change' 
WHERE tmp_id IN ('tmp1','tmp2','tmp3');

まとめ

以上のように、WHERE句の位置を工夫するだけでSQL実行時の事故を防ぐことが出来ます。

SQL作成時には、実行する時に何の負担も気を付けることもないようなものを作成することを心がけるとよいと思います。

以上、三上でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?