まちゅダイアリー

基本をしっかり!SQL練習問題

2008-12-24

高専カンファレンスでもちょっと宣伝したけど、今日 (24日) 発売の日経ソフトウエアに SQL の記事を書いた。 「基本をしっかり!SQL練習問題」と題して、問題形式で SQL に慣れていくという構成。 この「慣れる」というところが僕の中でのポイントになってる。

僕も昔は SQL に苦手意識を感じていて、資格試験の勉強がイヤだったのを覚えている。 if 文も for 文も使えないし、 Ruby や Perl のハッシュの方が便利じゃんって思ってた。 でも、そもそも普段使うプログラミング言語とは別の考え方をしなきゃいけないってことに気がついてから、「SQL の考え方」というものが分かるようになってきた。

例えば、記事の中でも触れているけど、配列から偶数の値を求めるときは、 Java なら以下のように書く。

int[] items = { 1, 1, 2, 3, 5, 8 };
int sum = 0;
for (int item : items) {
  if (item % 2 == 0) {
    sum += item;
  }
}

でも、 SQL だとこうなる。

SELECT SUM(item) FROM items
  WHERE MOD(item, 2) = 0;

ここには for 文も if 文もでてこない。 「偶数の値」という条件を WHERE 節に書き、「合計値」という条件を SELECT 節に書いてる。 このように、 SQL はデータの集合に対するフィルタとして考えると、すんなり頭に入ってくる。

14問の問題は、以下の3編に分かれている。

集約関数やサブクエリは苦手な人が多いと思うけど、「SQL = フィルタ」という考えに慣れてくると少しずつ分かるようになると思う。 SQL に苦手意識を感じている人に読んでもらいたいなぁ。僕がそうだったように。