since 2002/01/01
lastupdate 2003/01/16
   

基本的なこと

ここでは、PostgreSQL についてのごく基本的なことを扱います。 初めてデータベース(PostgreSQL)に触る人などの参考になればと、 ごく初歩的な事をごく簡単に書いたものです(^^;;;
尚、インストールや初期設定は、こちら をご覧ください。


データベースのユーザ

さて、おそらく PostgreSQL のインストールはユーザ: postgres で行ったかと思います。 また、initdb もユーザ:postgresで行っていることと思います。 とりあえず、ここではそういう前提で話を進めます。
PostgreSQL においても Linux 同様ユーザという概念があり、同じようにユーザごとにデータベースやテーブルに対する権限を設定できます
ユーザの分類としては、root相当のスーパーユーザと一般ユーザということになります。

スーパーユーザ
スーパーユーザは、initdb コマンドでそのデータベースインスタンスを作成したユーザが、 自動的にスーパーユーザとして登録されます。
当然、そのデータベースインスタンスにおける全ての権限を持ち、 あらゆるコマンドを実行できます。ま、rootと同じですね。

一般ユーザ
一般ユーザは、ユーザ作成の際にどの程度の権限を与えるか選択できます。 選択できる権限は、新しいデータベースを作成する権限と新しいユーザを追加する権限です。 いずれも持たせることはできますが、基本的にはどちらも与えないほうが良いかもしれません。 両方の権限を持たせた場合、それはスーパーユーザと同じと言う事になります。
また一般ユーザは、自分で作成したテーブル以外へは明示的に許可が与えられない限りアクセスできませんので注意が必要です。

ユーザの追加

ユーザーの追加は、スーパーユーザで行います。 もし一般ユーザでも新しいユーザを追加する権限があれば実行できます。
とりあえず、koano というユーザを追加するにはシェルコマンドで、

$ createuser koano

とします。そうすると次のようになりますので、必要な権限を与えるなりします。

Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

これらは順に、データベース作成の権限、ユーザを追加する権限をそれぞれ与えるかどうかの問いかけです。 必要に応じて設定しましょう。
また、SQLでも CREATE USER ユーザ名; という SQL を発行すれば同じ処理が行えます。

ユーザの削除

ユーザの削除はスーパーユーザのみに許されています。実行するには次のようにコマンドを発行します。

$ dropuser koano

実行すると、何の確認もなしにいきなり削除されますので注意してください。 また、旧バージョンでは、 $ destroyuser foo となっていた時期もあるようですので、 古いバージョンの場合はこちらを使用します。
尚、dropuserでは、それまでに削除対象ユーザが持っていたテーブルなどは削除しません。 また、dropuserを行うユーザがデータベースを所有していた場合はエラーになり、削除できません。 この場合は、先にデータベースの所有権を変更するか、削除しておく必要があります。
尚、SQLでも DROP USER koano; という SQL を発行すれば同じ処理が行えます。

データベースの作成と削除

ユーザを作成したら、次はデータベースを作成しましょう。
データベースはスーパーユーザもしくはその権限のあるユーザが実行できます。 例えば、データベース TEST を作成するシェルコマンドとしては、

$ createdb TEST

とするだけです。成功すれば、CREATE DATABASE と表示されます。 このとき、オプションにいろいろ指定できます。たとえば文字コードの指定などです。 詳しくはマニュアルの createdb のページをご覧ください。
尚、文字コードについてのオプションを渡さない場合は、インストール時に指定した文字コードが使われます。

また、データベースを削除するには、次のシェルコマンドを実行します。当然これはデータベースの所有者、 又はスーパーユーザで無いと実行できません。で、データベース TEST を削除するシェルコマンドは、

$ dropdb TEST

となり、成功すれば DROP DATABASE と表示されます。尚、旧バージョンでは $ destroydb TEST となります

psql を使う

さて、PostgreSQLには、標準で psql というアプリケーションが付いています。 これは、データベースサーバにSQLを発行し、その結果を表示するためのプログラムで、 ここまで紹介してきた、ユーザの作成やデータベースの作成も、実際にはpsqlを通して実行されるようです。
とりあえずはpsqlを使うことから始めましょう(^^)
起動するには以下のようにします。引数TESTはデータベース名です。

$ psql TEST

これでデータベースTESTへアクセスすることができるようになります。TEST=# となっているのがプロンプトです。 プロンプトは、現在のデータベース名に =# が付いた形になります。 また、複数行にわたるSQLを入力している際には、 2行目以降は TEST-#となります。 ここにさまざまなSQLを発行することで、データベースを操作できます。
また、SQLとは別にバックスラッシュコマンドというものもあり、これらによりデータベースの一覧などを表示できます。
尚、psqlのコマンドは、バックスラッシュ(\ 本来半角です)に続けてタイプします。
日本語環境では(¥)がバックスラッシュの代わりになります。主なバックスラッシュコマンドは次のとおり。

psql の主なコマンド
コマンド説明
¥qpsqlを終了します
¥dテーブルやシーケンスの一覧を全て表示します
¥dtテーブルの一覧を表示
¥dsシーケンスの一覧を表示
¥zアクセス権を含めてテーブルの一覧を表示
¥lデータベースの一覧を表示
¥iファイルに書かれたSQL文を読み込んで実行します