データベースで最も利用されるコマンドは,検索を実行する「SELECT」であろう。今回は,このSELECTコマンドを応用して,さまざまな検索結果を得る方法を紹介する。

 本講座第3回「データベースの基本操作」では,SELECTコマンドの基本構文を紹介した。その構文は次の通りである。


SELECT [ * | 列名 (, ...) ] FROM テーブル名;

 SELECTコマンドはSQLコマンドの中でも最も複雑な文法を持つ。例えば,検索条件を絞って検索したり,複数のテーブルを組み合わせて検索したり,検索結果を並べ換えたりというように,さまざまな検索結果が得られる。このSELECTコマンドを自在に使えれば,効率よく検索できるわけだ。早速その方法を紹介していこう。

 今回も,sampleデータベースを使いながら利用例を説明する。ただし,前回にaddressbookテーブルを作り直し,nycardテーブルを新しく作成したため,テーブル内にはデータが存在しない。そこで,双方のテーブルにデータを書き込んでおこう。

テーブルへのデータ一括登録

 ここでは,テーブルへのデータの書き込みに,COPYコマンドを利用する。COPYは,タブ区切りテキストやカンマ区切りテキスト(CSV)などの形式のファイルとテーブルの間で,データをやり取りするコマンドである。

 COPYコマンドには,SQLコマンドとバックスラッシュ・コマンドの2種類がある。SQLコマンドのCOPYはセキュリティ上,PostgreSQLの管理者権限がないと利用できないようになっている。そのため,今回はバックスラッシュ・コマンドを用いる。

 ファイル内のデータをテーブルに読み込ませるには,次のようにCOPYコマンドを発行する。


\COPY テーブル名 FROM ファイル名 [CSV]

 デフォルト(初期設定)では,タブ区切りテキスト形式のファイルからデータを読み込ませることになる。ただしCSVオプションを指定することで,カンマ区切りテキストが利用できる。一般に,カンマ区切りテキストの方が扱いやすいだろう。

 ちなみに,テーブルからファイルにデータを書き出すには,


\COPY テーブル名 TO ファイル名 [CSV]

のように発行する。オプションを指定しなければタブ区切りテキスト形式で,CSVオプションを指定すればカンマ区切りテキスト形式で,データが保存される。

 それでは,カンマ区切りテキスト形式のファイルを,addressbookテーブル(住所録)とnycardテーブル(年賀状発送履歴)に読み込んでみよう。それぞれのテーブルに読み込むデータを,「addressbook.dat」(図1)と「nycard.dat」(図2)として用意する*1

図1●addressbookテーブルに読み込ませる内容
図1●addressbookテーブルに読み込ませる内容
「addressbook.dat」というファイルで作成する。
[画像のクリックで拡大表示]
図2●nycardテーブルに読み込ませる内容
図2●nycardテーブルに読み込ませる内容
「nycard.dat」というファイルで用意する。

 これらのファイルをテーブルに読み込ませる手順と,正しく読み込まれたことを確認する方法は図3の通り。COPYコマンドは大量データの一括登録で便利なため,手順をしっかり覚えておこう。

図3●addressbookテーブルとnycardテーブルにデータを登録して確認する
図3●addressbookテーブルとnycardテーブルにデータを登録して確認する
\COPYコマンドを使い,テキスト・ファイルからテーブルにデータを一括登録する。
[画像のクリックで拡大表示]