SQL文を使う時は必ずWHERE句を使おう

 はじめに

データベースを管理できるシステム「MySQL」を扱うときに必要な「WHERE」に焦点をあててみました。WHEREで参照する場所を指定しないと、全てのデータを消しかねないので注意しましょう。

今回は、データベースの作成方法は省略し、データベース内のテーブルを更新するときを例に取ってみます。テーブルは下記のものを利用します。

+-------+----------+
| name | password |
+-------+----------+
| user1 | user1 |
| user2 | user2 |
| user3 | user3 |
| user4 | user4 |
+-------+----------+

 WHEREを使ってテーブル内のレコードを更新する

まずは、テーブル内のレコード(行)を、WHEREで場所を指定し、「user4」のパスワードを「password4」にしてみます。

UPDATE user_info SET password = "password4" WHERE name ="user4";

実行結果は下記のようになります。

+-------+-----------+
| name | password |
+-------+-----------+
| user1 | user1 |
| user2 | user2 |
| user3 | user3 |
| user4 | password4 |
+-------+-----------+

4行目の「user4」というユーザーのパスワードが変更されていますね。

WHEREを使わないで更新してみる

では、WHEREを使わないとデータはどうなるのでしょうか。実際にやってみます。コードは下記の通りです。

UPDATE user_info SET password = "password3";

実行結果がこちら。

+-------+-----------+
| name  | password  |
+-------+-----------+
| user1 | password3 |
| user2 | password3 |
| user3 | password3 |
| user4 | password3 |
+-------+-----------+

パスワードがすべて「password3」となっていしまいました・・・。

このように、WHEREでどのレコードを更新するのかを指定しないとすべてのデータが変更されてしまいます。

データベースを更新する時は「WHERE」で更新箇所を指定しよう

WHEREを使わないと、すべてのデータが更新されてしまい、大事なデータが一瞬で書き換わってしまうことがわかりました。

ユーザーのログイン情報や顧客情報が保管されているのがデータベースです。データベースの更新の際には、「WHERE」があるかどうかをチェックし、慎重に更新作業をしましょう。