重いSQLを無駄に投げるな! そのテーブルをつかんだままにされたら困る! お仕事でデータベース・プログラミングしているあなたは,データベース管理者に怒られた経験はありませんか? ましてや自分が書いたプログラムのバグのため,経理データが合わなくなってしまった! などという事態が発生したらもう大変です。データベースを扱うプログラマは,やっぱりデータベースに強くありたいものですね。データベースとのつき合いがうまくなる5冊をご紹介します。

はじめてのPostgreSQL
ブルース・モムジャン 著
日本ポストグレスユーザー会 訳
ピアソン・エデュケーション 発行
2001年9月 496ページ
4200円(本体)
bk1で購入する

手元になければフリーのRDBMSを
さわって覚えるこの1冊

 みなさんはすでにご存じの通り,どんなプログラミング言語でも本を読むだけでは身に付きません。データベースも本を見ながら,動かしてみる練習が必要です。幸い今はフリーのRDBMS(リレーショナル・データベース管理システム)を手に入れることができます。OracleやSQL Serverなどにアクセスできる環境がない人は,「はじめてのPostgreSQL」から始めてみるのはいかがでしょうか。

 フリーでオープンソースのRDBMS,PostgreSQLを題材に,データベースの問い合わせの初歩から,現実社会の問題をデータベースで解決できるようになるまでを,ていねいに解説してくれます。「E-Rモデル」,「第3正規型」といった難しい知識は必要ありません。さわって覚えるうちに,データベースの基礎と,なによりデータベースとはそもそもどんなものなのかを理解できるはずです。

 著者のBruce Momjian氏はPostgreSQL開発チームの創始者の1人です。本体4200円とちょっと値が張る本ですが,28ページにも及ぶFAQ,200ページを超えるマニュアルなどを収める充実した付録もあり,それだけの価値が感じられるはずです。

 本当に初歩からなので,データベースの経験がまったくなくても大丈夫です。たとえばデータベースのテーブルにデータを挿入する「INSERT文」の説明で,文字列の前後に単一引用符「'」を使う際には,二重引用符「"」ではうまくいきません,と説明してくれます。これからデータベースに取り組む人も,じっくり学びたいならお薦めの1冊です。

実践SQL教科書
西尾 章治郎 監修
マルチメディア通信研究会 編
アスキー 発行
1996年6月 302ページ
2816円(本体)
bk1で購入する
SQLクリックリファレンス
Kevin Kline,Daniel Kline 著
石井 達雄,宮原 徹 監訳
イデア コラボレーションズ 訳
オライリー・ジャパン 発行
2001年11月 289ページ
2800円(本体)
bk1で購入する

SQLの基本を押さえたい
あなたに

 リレーショナル・データベースには普通SQLでアクセスします。SQLは文法がとても簡単なデータベース問い合わせ専用の言語ですが,難しさもあります。たとえば,ある一つの結果を得るためのSQL文は複数考えられます。それぞれ動作速度が違ったり,同時にデータベースにアクセスする他のユーザーに迷惑をかける度合いが違ったりします。SQLに強くなれば,冒頭のような文句を言われることも減るでしょう。

 SQLの基本を学ぶのが目的なら,お薦めは「実践SQL教科書」です。データベースとはなにか,データベースの構造,SQLの使い方などを解説します。本書が特徴的なのは,図解をふんだんに用いていることです。たとえばテーブルを結合するSQLで,誤ってWHERE句で指定しなかった場合,60行の結果が返ってしまうことを説明するために,出てきてしまう60行の表をちゃんと図示しています。直感的でわかりやすいといえます。

 適切なSQLのリファレンスがほしいなら,「SQLクイックリファレンス」がいいでしょう。SQLの簡単な歴史,基本的な概念,SQLのコマンド・リファレンスなどを記述してあります。本書のメインはコマンド・リファレンスです。サンプル・コードもふんだんにあり,一通りSQLを覚えたあとならば,この本を見ながらならばほとんどのSQLを読めるはずです。書くときに迷った場合も有効です。

 Oracle,SQL Server,PosgreSQL,MySQL,というデータベースが備えるそれぞれのSQL文法の相違も,SQL99という共通規格をベースにして,きちんと説明しています。たとえば,現在実行しているトランザクションを保存するポイントを作成するSAVEPOINTコマンドについては,Oracleはサポートしていて,SQL ServerはSAVEPOINTコマンドのかわりにSAVEコマンドがあり,それぞれどう利用するかを解説してくれます。もちろん索引でSAVEPOINTのかわりに,SAVEコマンドを引いても同じページにアクセスできます。先月まではSQL Serverを利用していたが,今月からOracle,というように,RDBMSの種類が変わるときにも,本書は役に立つでしょう。B6判で289ページと小さい本なので,パソコンの隣に置いておくのにうってつけです。

現場で使えるSQL
小野 哲,藤本 亮 著
翔泳社 発行
2001年10月 291ページ
2200円(本体)
bk1で購入する
プログラマのためのSQL
第2版

ジョー・セルコ 著
秋田 昌幸 訳
ピアソン・エデュケーション 発行
2001年4月 522ページ
4500円(本体)
bk1で購入する

SQLに強くなる2冊

 必要なSQLがどうもうまく浮かんでこない,というあなたにお薦めなのは「現場で使えるSQL」です。翔泳社発行の雑誌「DBマガジン」の人気連載を再編集した書籍です。

 本書は例題方式のユニークな構成が特徴です。章のはじまりでSQL文の基本的な書式を確認したあとは,1ページごとに,例題,正解のSQL文,実行結果,解説と進んでいきます。扱うRDBMSはOracleとSQL Serverです。

 解説は次のページにわたることもありますが,ていねいでわかりやすい文章で書かれています。例題に付随して,SQL文を使ったことのあるプログラマならだれでもわかるレベルで,よく使うパターン,やってはいけないことをやさしく教えてくれます。

 例題は,「売り上げのない担当者の,担当者IDと担当者名を表示せよ」と実際によくありそうな実践的なものです。さらにその解説で,同じ結果を得られるのだが,片方は性能を大きく改善できる場合があることを指摘してくれます。とにかく実践的なのです。

 始めから順番に読んで,多数の例題をこなしていくうちに,SQL文を作るときの考え方を自然と身につけることができるでしょう。従来,プログラミング言語でデータを処理していたことが,SQL一発でできるんだ,と気づくこともあるかもしれません。その方が,楽に賢くプログラムを作成できる場合は多いですし,なによりデータベースに強いプログラマ,という感じがしませんか?

 SQLに強くなるもう1冊は,「プログラマのためのSQL」です。現在SQLを使っていてSQLの実経験が1年以上あるプログラマを対象に,SQLプログラミングのコツとテクニックを解説しています。

 本書は冒頭で,プログラマはデータベースのテーブルを,データが連続するファイルの中の項目だと考えたがるが,データベースはデータの集合であると考えなければいけない,ということを指摘します。これまで私はSQLを読むのがちょっと苦手だったのですが,これを聞いてから本書のSQLを読むと,だいぶ理解しやすくなりました。

 このような重要な概念をふまえたうえで,SQLの一つひとつのコツやテクニックに対して,テーブルとSQLの例を示しながら,なぜそうなのかをRDBMSの動作まで踏み込みながら解説していきます。陥りがちな間違いに対しても,なぜそうなのかが記されているので,「これはそういうことだと覚えよう」などと努力する必要はありません。

 その代わり,読者は例に示されたテーブルとSQLにじっくり向き合わないと理解するのは難しそうです。SQLをすらすら読めるレベルでないと,本書を読破するのは困難かもしれません。さらに集合の基礎的な理論を理解しているほうが読むのは楽でしょう。でも読破できれば,SQLでここまでできるのか,という思いにひたれることになるでしょう。