ところで“データベース”とは何でしょうか。前回はデータベースを知っているものとして話を進めましたが,データベースをご存知ない方のために,ここで簡単に説明しておきます。

 データベースはファイルと同様に,データの入れ物です。ファイルが単純なたなだとすれば,データベースは倉庫番のいる倉庫に相当します。格納や取り出しなどのデータ操作はすべて倉庫番に依頼して行います。

 倉庫番が面倒を見るので,倉庫の中にどのようにデータが格納されているのか,利用者は気にする必要がありません。この倉庫番に当たるものがデータベース管理システム(DBMS)です。

 DBMSは複数のプロセスが同時に更新することを防ぐためにロックを管理したり,トランザクションといって一連の処理を1つの固まりとし,途中でそれまでの処理を元に戻したり(Rollback),最終的に確定する(Commit)ことを可能にします。

リレーショナル・データベースとSQL

 今回利用するSQLite*1のようなリレーショナル・データベースでは,データをテーブル,つまり2次元の表に格納します。複雑なデータの場合は,複数の単純なテーブルに切り分けて格納し,それらテーブル間に関係(リレーション)を設定します。これにより,データの取り扱いが容易になります。

*1:前回紹介した通り,SQLiteはDBD::SQLiteに組み込まれています。よって,DBD::SQLiteをインストールすれば自動的に導入されます。もし,BD::SQLiteをインストールされていない場合,“http://search.cpan.org/author/MSERGEANT/DBD-SQLite/”からソース・コードを入手して展開し,以下の手順でインストールします。
$ perl Makefile.PL
$ make
$ su
# make install

 利用者は,テーブルの作成,データの登録や更新,削除,取り出しといった操作をするときは,処理内容をDBMSに指示します。指示するための標準的な言語がSQLです。SQLでは,テーブルの作成は「CREATE TABLE」,削除は「DROP TABLE」になります。また,データの登録は「挿入(INSERT)」,蓄積されたデータの取り出しは「選択(SELECT)」です。データの「削除(DELETE)」,「更新(UPDATE)」は言葉通りです。基本的な構文を表1に示しました。

表1●SQLの基本的な構文
表1●SQLの基本的な構文

 基本的なSQLは,OracleやPostgreSQLなどのDBMSでも大差はありません。しかし,DBMSによって歴史的な経緯や提供されているサービスの違いから,利用できる構文や関数,データ型などに多少の違いがあります。

 倉庫番のたとえ話でいえば,SQLは入庫/出庫など倉庫番ならだれでも知っている業界用語のようなもので,基本事項は共通ですが,倉庫によってはサービス内容が微妙に違うこともあるというわけです。そのため実際に利用するときは,各DBMSのマニュアルでよく確認してください。SQLiteのマニュアルはWebサイト(http://www.sqlite.org/lang.html)に公開されています。