データベースで最も利用されるコマンドは,検索を実行する「SELECT」であろう。今回は,このSELECTコマンドを応用して,さまざまな検索結果を得る方法を紹介する。
本講座第3回「データベースの基本操作」では,SELECTコマンドの基本構文を紹介した。その構文は次の通りである。
|
SELECTコマンドはSQLコマンドの中でも最も複雑な文法を持つ。例えば,検索条件を絞って検索したり,複数のテーブルを組み合わせて検索したり,検索結果を並べ換えたりというように,さまざまな検索結果が得られる。このSELECTコマンドを自在に使えれば,効率よく検索できるわけだ。早速その方法を紹介していこう。
今回も,sampleデータベースを使いながら利用例を説明する。ただし,前回にaddressbookテーブルを作り直し,nycardテーブルを新しく作成したため,テーブル内にはデータが存在しない。そこで,双方のテーブルにデータを書き込んでおこう。
テーブルへのデータ一括登録
ここでは,テーブルへのデータの書き込みに,COPYコマンドを利用する。COPYは,タブ区切りテキストやカンマ区切りテキスト(CSV)などの形式のファイルとテーブルの間で,データをやり取りするコマンドである。
COPYコマンドには,SQLコマンドとバックスラッシュ・コマンドの2種類がある。SQLコマンドのCOPYはセキュリティ上,PostgreSQLの管理者権限がないと利用できないようになっている。そのため,今回はバックスラッシュ・コマンドを用いる。
ファイル内のデータをテーブルに読み込ませるには,次のようにCOPYコマンドを発行する。
|
デフォルト(初期設定)では,タブ区切りテキスト形式のファイルからデータを読み込ませることになる。ただしCSVオプションを指定することで,カンマ区切りテキストが利用できる。一般に,カンマ区切りテキストの方が扱いやすいだろう。
ちなみに,テーブルからファイルにデータを書き出すには,
|
のように発行する。オプションを指定しなければタブ区切りテキスト形式で,CSVオプションを指定すればカンマ区切りテキスト形式で,データが保存される。
それでは,カンマ区切りテキスト形式のファイルを,addressbookテーブル(住所録)とnycardテーブル(年賀状発送履歴)に読み込んでみよう。それぞれのテーブルに読み込むデータを,「addressbook.dat」(図1)と「nycard.dat」(図2)として用意する*1。
![]() |
図1●addressbookテーブルに読み込ませる内容 「addressbook.dat」というファイルで作成する。 [画像のクリックで拡大表示] |
![]() |
図2●nycardテーブルに読み込ませる内容 「nycard.dat」というファイルで用意する。 |
これらのファイルをテーブルに読み込ませる手順と,正しく読み込まれたことを確認する方法は図3の通り。COPYコマンドは大量データの一括登録で便利なため,手順をしっかり覚えておこう。
![]() |
図3●addressbookテーブルとnycardテーブルにデータを登録して確認する \COPYコマンドを使い,テキスト・ファイルからテーブルにデータを一括登録する。 [画像のクリックで拡大表示] |