しろあじ備忘録

システム関係の備忘録。ザルのような記憶力なので、こうして書いておかないと忘れるのだよ。

【雑記】コマンドラインで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の中身をこうやって表示させたり、操作してるだけだよー」
と説明することで、あっさり理解してもらえたらしい。

f:id:ramapipi:20171015093616j:plain