SQLをしばらく使ってないとすぐに忘れる
SQLってしばらく使ってないとすぐに作法を忘れてしまう。SQLに限らずプログラム言語はまんべんなくそうなので、SQLに限った話ではないのだけど。しばらくテストフェーズに関わる期間が長くて、実装から離れていたのもあるし設計もだいぶ関わってない。そうなると、DBを操作する機会(というかデータを意識する機会というか)もけっこうなくなってきていて、そんな状況で急にSQLを使うような場面になると「あれ、どうやってデータ取得すればいいんだっけ」という風になる。だいたい期間としての目安は半年くらい。それくらいですっかり忘れる。
あわててSQLのリファレンスを開いて、「あーこうだったこうだった」とSQLを組むのだけど、なんかアホらしいというか、なんでこんなに身になってないのかって考えてみると、場当たり的にリファレンス開いてやってるからだろうなと思う。取り繕って仕事をこなしても結局うわべだけのものなので、本質的に身になってない。
SQLとはいってもDBのチューニングとかそういった高度なことではなく、データ操作系のDML程度のことがすぐに記憶から抜け落ちるので、本当に程度が低くて恥ずかしい。エンジニア2年生でも出来るようなことが出来ないことが多くて本当に恥ずかしい。
恥ずかしくてたまらないので、本を買って復習することに決めた。いろいろとSQLに関する本はあるけれど、自分にぴったりそうな本があったので、最近はこれで勉強をしている。
- 作者: 山田祥寛
- 出版社/メーカー: 日経BP社
- 発売日: 2013/04/18
- メディア: 単行本
- この商品を含むブログ (2件) を見る
この本の良いところは、本当に簡単なSELECT文からデータ定義までを一通り学び直すことが出来ること。書き込み式、とはなっているが、実際にRDBMSをインストールしてSQLを叩くと構文エラーとかもわかるので、そちらのほうがいい気がする。自分はXAMPPをインストールして、MySQLで実際にSQLを動かしてみている。付録のCDにテーブルとデータが格納されているので、自分でデータを準備しなくていいので楽。
なにより実際の現場で使えるSQLをそのまま身につけられるので、ただ本を読むタイプよりもより理解が早いし、自分には合ってると思った。
恥ずかしながら、GROUP BY句の使い方として、集計関数(例:AVGなど)を組み合わせて使うのが一般的なことをこの本を読むまで知らなかった。そしてもっと恥ずかしいのはGROUP BY句でグループ化を行う場合に、取得列にはグループ化キーとその集計対象となる列しか指定できないことを知らなかった。どれだけ今まで「なんとなく」でSQLを使ってきたのか...
住所別に生徒の年齢平均を知りたい、という場合のGROUP BY句で指定するのは
SELECT address, SVG(age) FROM student_info GROUP BY address;
上記のようにaddressだけしか指定できない、ということなのだけど、
そういった事情を知らなかったため関係ない列(たとえば、生徒名など)を指定してしまっていたりした。
実際実行すればエラーを吐くので、その部分を修正するのだけど、本質を理解せず漫然と修正していたわけです。
「なぜエラーになるのか」なんていうことを人に聞くのはいい加減憚れる年齢になってきたので、この本は非常によい。
また、いままであるのは知っていたけど、
使ったことのなかったHAVING句の使い方についても学ぶことが出来た。
たとえば、先程のSQL結果では住所別に年齢平均が出力されるが、
さらに出力条件を絞る(例:20歳未満だけを抽出)なんていうときは
HAVING句を使うとシンプルでわかりやすいことを知った。
SELECT address, SVG(age) FROM student_info GROUP BY address HAVING AVG(age) < 20
HAVING句を使わずとも、WHERE句の中でBETWEENを使って
範囲指定をしてもいいのだろうが、(いままでは多分その方法を使っていた)
当たり前の常識として「HAVING句」というのもあるのだ
ということを知れただけでだいぶよい。
自分のようなエセエンジニアな人は多くはないだろうけど、
ちょっとSQLから離れてしまい改めて覚え直したいと思ってる人や、
エンジニア初心者でSQLの勉強をしたいと考えてる人にも
ぴったりな本だと思います。
とくにDBの制限はないので、Oracleだろうが、MySQLだろうがPostgreSQLだろうがSQLServerだろうがACCESSだろうが関係ない本なので。
スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ)
- 作者: 中山清喬,飯田理恵子
- 出版社/メーカー: インプレス
- 発売日: 2013/04/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2008/02/07
- メディア: 単行本(ソフトカバー)
- 購入: 54人 クリック: 1,004回
- この商品を含むブログ (78件) を見る
- 作者: 朝井淳
- 出版社/メーカー: 技術評論社
- 発売日: 2017/02/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
IT業界に就職が決まった人が新人研修を受ける前に身に付けたいデータベースとSQLの基礎知識+α
- 作者: 秋山準造
- 発売日: 2018/02/24
- メディア: Kindle版
- この商品を含むブログを見る