7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

最近SQLを書くのが楽しい

Posted at

実務でOracleのSQL*Plus使い始めて、そろそろ1ヶ月です。
振り返りがてら、どんな感じで成長したのか見ていこうと思います。

SQLと出会った当初

知らない言葉が多すぎる

当時の脳内こんな感じでしたね。

  • SELECT:わかる
  • FROM:わかる
  • WHERE:ホエア?
  • HAVING:食事?
  • オーダーバイク:かっこいい

単一行関数が出てきたあたりでオーバーフローしました。
SQLは「データ操作言語」で、私にとって多少蓄積のあった「プログラミング言語」ではないので、新しい単語と概念多すぎて全然頭に入ってきませんでした。

一文に要素が多すぎて読めない

C++がほんのすこし書けるんですが、せいぜい一行でセミコロンにたどり着きます。
SQL長過ぎませんか?
SELECTやWHEREで5個も出てきたらショートするし(しかもカラム名ってだいたい長い)、副問合せとかもうわからん。
上司や先人たちに蓄積されたスクリプト、1個の問い合わせに平気で20行くらいあります。
全然わからないのに、大量のアルファベットが直接脳内に来るので、毎日パンクしていたような。

思い通りの出力ができない

欲しいデータをどこに取りに行けばいいかわからない。
いい感じに出力したいだけなのに、上司のスクリプトをコピらないとできない。
Silver DBAを取るときに、そのくらい勉強したはずなのに…
「もうSQLとわかりあえる日は来ないんだ…」と思ってました。

いま

ユーザを消して作るSQLが書ける

DROP USER hogehoge CASCADE;
CREATE USER "hogehoge"
IDENTIFIED BY "egohegoh";
GRANT CREATE SESSION TO hogehoge;
GRANT RESOURCE TO hogehoge;

これですね。コード甘いかもしれないですが目を瞑って下さい。
実務で、検証時に無限回ユーザ(スキーマ)作って表作ってユーザごと消して…をやるおかげで、普通に書けるようになりました。
(SQLの勉強だけしてた頃は書けなかったです。なんでや)

SQL*Plusのおまじないがわかり、定義情報を取れるようになった

set lin 1000
set pages 500
col owner for a10
col max_value for 999999999999999999999999999
こういうのですね。
最初はおまじないと言われて育てられたが、気にはなっていた。
この子たちがわかって、やっと出力時の整形ができるようになりました。

1ヶ月仕事した結果、こんなのを1から書けるように。

hoge
spool C:\hogehoge\hogelog

conn hogehoge/egohegoh@oraora

set lin 1000
set pages 500
col owner for a10
col table_name for a50
col constraint_name for a50

select count(*)
from dba_indexes
where owner = 'hogehoge';

select owner,index_name
from dba_indexes
where owner = 'hogehoge'
order by index_name;

spool off

コード甘いかもしれないですが目を瞑って下さい(2回目)。
どこから取るのかすら不明だった定義情報も、a10をa20にして文字数オーバーの改行が起きないようにするなど、工夫しながら確認できるようになりました。
SQLとはわかりあえないと思ってたので、こういうのを仕事内容に合わせて柔軟に書けるようになったのは、感慨深いですね…

安全なDBの運用保守がちょっとわかる

依頼があってDBの運用保守する過程で、例えばカラム追加なら、
・カラム追加するテーブルは存在するか?
・既にテーブルに同名のカラムはないか?
など、安全に運用するための確認観点がわかるようになってきました。
止めてはいけない基幹システムですから、ミスしない仕組みは重要だなって常々思ってます。

まだまだ知らないこといっぱい

新人が1ヶ月でできるようになることなんて、たかが知れてると思います。
でも、こう見返すと「ちょっとはできるようになったのかも~」って調子に乗りそうです。

ここまで成長できたのは、何万行あるスクリプトをボンと渡してくれた上司のおかげですね。
最初はヒーヒー言ってましたが、今はすごく楽しいです。

7
1
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
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?