【雑記】コマンドラインでSQL文実行の思い出
分かってればなんてことはないが、という話
MYSQLだが、phpMyAdmin使わずに、コマンドプロンプトからSQL文を実行する、
というシチュエーションがあった。
多少加工して書くがニュアンスは変えないようにする。
新人的な、プログラム初心者の方数名。。phpMyAdmin使わない前提で。
手順も明快なので、特に難なく作業は進んだが、、
とある人が、INSERT文あたりで間違えたデータを作成した、という話。
まあ、単純にDELETE流せば済むのだが。
そこに至るまで、ちょっとしたやり取りが生まれた。
質問内容をどう伝えるか
Aさん「すみません、先週流したSQLって、コマンドプロンプトでどうやって表示するんですか?」
といった質問の仕方をしてきたのだ。
後でわかるが、Aさんは先週INSERT文を流したことでできたデータを見たい、、、SELECT文を指していたのだ。
聞かれた側。。Bさん「先週の?PC再起動しているし、ログも残していないから、表示はできないですね」
*Aさんの言葉から、「コマンドプロンプトで流したSQL文を見たいのかな?」と判断して回答。
Aさん「いや、そうじゃなくて、、表示できるじゃないですか。前、Bさん表示させてましたよ」
*以前、SELECT文流してデータを確認しているのを見かけたらしい。
Bさん「??コマンドプロンプト閉じていなければ、上矢印とかF7で履歴見れると思うけど、、」
Aさん「(試してみて)あ、これではないんです。コマンドプロンプトの中をみたいんです。この前、コマンドプロンプトで保存したじゃないですか」
Bさん「保存??」
とまあ、そういった会話がしばらく続いた。
コマンドプロンプトがデータベースと思っていた模様
どうもかみ合わない会話。。
しかし、やりとりするうちに、Bさん気づく。
「もしかして、作成したデータが見たいの?」
Aさん「はい!そうです」
Bさん「SELECT … で」
Aさん「あ!出ました!ありがとうございます!で、間違えて作っちゃったのがあるんで、ここを選択してDELETEボタンおせばいいですか?」
Bさん「んん?」
見ると、Aさんコマンドプロンプトに表示されたSELECT文結果の中の、消したい行部分を選択している。
Bさん「うーん、それでは消えないねえ。。DELETE文知ってるよね?それでWHERE句をあーして流すとそのデータ消せるよ」
Aさん「DELETE文は知ってます。でも、こうして選択してDELETEキーで消せると思って。。」
コマンドプロンプトというツールを利用して、SELECT文によってデータの中身を表示させたのだが、
なんというか、コマンドプロンプトそのものがDBの塊で、
直接DBをいじれると思った模様。
なんで、こんな話をかいたのか、というと
実はそう思われた方が他にも複数いたということ。少数ではあるが。。
それが興味深くて印象に残って、なんとなく書いてみた。オチはないが。
ほとんどの方は、「DELETE文流そう」という考えにすぐに至ったが、
少数が「コマンドプロンプトに表示されたデータを選択してDELETEキーすれば消えるはず」と「推測」したのだ。
これがphpMyAdminでデータを表示したのなら、確かに選択してDELETEキーで消えるので、まったく的外れじゃないかもしれない。
前述のAさんは「推測」して、「じゃあ、まずはそのデータを表示させたい!」と思ったので、
当初の質問
Aさん「すみません、先週流したSQLって、コマンドプロンプトでどうやって表示するんですか?」
になったのだろう。
「先週流したSQLでできたデータをどうやって表示させるんですか?」 だったら、もうちょっとわかりやすかったかもね。
あ、そもそも「間違って作ったデータ消したいです」であっさり事は済んだのかー。
まあ、いろいろやり取りしたおかげで、Aさんがどのように受け止めてたのかが分かったから良いか。
Bさん説明ではいきなり
「まずは、コマンドプロンプト使ってデータ操作してみましょう」的な流れに入っただけというわけで、
DBに長年触れている人なら、あっさり「はいはい、プロンプトでやるのねー」とDELETE文流してしまうので、
Aさんのように考える人が存在する、ということが想像つかなかった。
ちなみに、Bさん、
「DBとコマンドプロンプトは別物で、コマンドプロンプトを利用してDBの中身をこうやって表示させたり、操作してるだけだよー」
と説明することで、あっさり理解してもらえたらしい。