第15回 更新処理を覚えよう (その4)
削除する
- もっと怖い命令というのは「削除」ですね。
- そう。削除体験として、さっき太郎君が登録してくれた、太郎君データを削除しようか。
- はい。 ID 67621 でしたので、消します。削除前に、WHERE条件が正しいかを SELECT で確認したほうが安全ですね。
SELECT * FROM customers WHERE id=67621; DELETE FROM customers WHERE id=67621;
1行目のSELECTで確認して、表示されたのが僕のデータだったら、同じ条件(WHERE句)になっている2行目のDELETE文で削除をする方針でいきまーす。
mysql> SELECT * FROM customers WHERE id=67621;
+-------+-------------+----------+-----------------+----------------+------------+---------------------+---------------+
| id | name | zip | prefecture_code | address | birthday | regist_date | unregist_date |
+-------+-------------+----------+-----------------+----------------+------------+---------------------+---------------+
| 67621 | ぼくは 太郎 | 123-4567 | 13 | 東京都のどこか | 1985-11-05 | 2009-04-04 16:14:15 | NULL |
+-------+-------------+----------+-----------------+----------------+------------+---------------------+---------------+
1 row in set (0.02 sec)
- たしかに僕のデータ1件だけが表示されたので、同じ条件(WHERE句)でDELETEを実行します。
mysql> DELETE FROM customers WHERE id=67621;
Query OK, 1 row affected (0.03 sec)
- そして再度、最初と同じ条件でSELECTして確認。
mysql> SELECT * FROM customers WHERE id=67621;
Empty set (0.00 sec)
- たしかに僕がいなくなりました。・・・・ちょっと寂しいです。。
- あはは。まぁ太郎君の練習用データベースだから、登録したかったらまた登録したらいいよ(笑)。
ともかく、削除文そのものだけでなく、前後の「ちゃんと処理ができたか」の確認を含めて、完璧だね。
残りあとわずか
- そういえば前回、都道府県別顧客数の人口比を出してみたいからデータを探してみよう、って話をしていたけど、データはあった?
- はい!ちょうどいいデータがすぐに見つかりました!
- じゃぁ次回はそれを使って、prefecture テーブルの拡張とデータの投入。そして太郎君のやりたかった「対人口比率」での集計をやってみようか。
- やったぁ、ありがとうございます。
- そして、さらにその次の回で、その他細々したお話しをいくつかして、太郎君にも免許皆伝ということにしようかなと思っているから。
- 免許皆伝、って嬉しいですけど、それって「おしまい」って意味ですか?
おわりに

いかがでしたか。更新系の構文をただ単に実行する方法ならば第1シーズンの講座でも紹介しました。今回は先輩の経験や太郎君の鋭いセンスで、更新処理の際にどんなミスを起こしやすいか、正しく更新されたことを確認するにはどう言った点に着目したらよいのかを聞くことができたと思います。
さて、先輩からの紹介にもあったとおり、本講座も残すところあと僅かとなりました。あと2回にわけて、テーブルレイアウトの変更方法やデータのダンプ方法などのテクニックやTIPSを学びます。お楽しみに。
今回の「サカイ先生のMySQL講座」への評価・ご意見があればご記入下さい。







