PostgreSQL ベータベース操作方法

基本的なデータベース操作

複雑な命令処理

ファイルからテーブル作成

バックスラッシュコマンド一覧


■基本的なデータベース操作

【ユーザー登録】

CREATEUSER -d -A ユーザー名
・データベースの作成を許可しない場合は、「-d」のかわりに「-D」を指定。
・「-A」はPostgreSQLのユーザー権限を与えないオプションです。ユーザー追加を許可するには「-a」オプションを指定します。
※ユーザーの追加許可を与えるとPostgreSQLのスーパーユーザーと同等の権限を与えることになる。

【ユーザー削除】

DROPUSER ユーザー名

【データベース作成方法】

CREATEDB データベース名

【データベース削除方法】

DROPDB データベース名

【データベース接続方法】

psql データベース名

【テーブル作成方法】

CREATE TABLE テーブル名 (列名 データ型, 列名 データ型, 列名 データ型);

【テーブル削除】

DROP TABLE テーブル名;

【データ登録】

INSERT INTO テーブル名 VALUES (値, 値, 値);

【データ抽出】

SELECT [抽出フィールド名] FROM [テーブル名] WHERE [条件式];
・「抽出フィールド」は希望のフィールドを入力する。「*」だとすべてが対象になる。
・「テーブル名」は抽出するテーブル名を入力する。
・WHERE以下の条件文は任意に追加する。

【データの更新】

UPDATE テーブル名 SET [代入式] WHERE [条件式];

【データ削除】

DELETE FROM [テーブル名] WHERE [条件式];

【権限の変更】

通常はテーブルを作成したユーザーがデータベースを操作できる権限をもっています。 これだとWeb上で利用する際にApacheの「nobody」などが利用できません。権限を変更する必要があります。
GRANT SELECT, INSERT, UPDATE, DELETE ON [テーブル名],[テーブル名] TO [ユーザー名];

■複雑な命令処理

【トリガーの利用】

トリガーとは更新や削除時に同時に行いたい処理を登録することです。

まずは関数(プロシージャー)の作成方法
DROP FUNCTION [関数名()];
CREATE FUNCTION [関数名()] RETURNS OPAQUE AS '
BEGIN
[予約語].[フィールド名] := [処理内容];
[予約語].[フィールド名] := [処理内容];
RETURN [予約語];
END;
' LANGUAGE 'plpgsql';
※ユーザ関数で、PL/pgSQL を使っているため、コマンドラインから、createlang plpgsql [データベース名] の様に先に実行して PL/pgSQL をデータベースに追加する必要があります。
※「NEW」はPL/pgSQLの予約語です。イベントが発生した後の行を指します。イベント発生前は「OLD」です。 ※戻り値は必ず「OPAQUE」になります。「OPAQUE」は特殊な型で、実際には戻り値の型が不明であることを意味します。

続いてトリガーの作成方法
先程の関数(プロシージャー)をテーブルと関連付けさせる為の処理です。
CREATE TRIGGER [トリガー名] BEFORE [処理の指定] OR [処理の指定] ON [フィールド名] FOR EACH ROW EXECUTE PROCEDURE [関数名()];
「処理の指定」はトリガーを実行させるタイミングを指定します。「INSERT」や「UPDATE」「DELETE」などを入力する。
「関数名()」先程の関数などを指定する。

【シーケンス作成方法】

データを毎回インクリメントしたい場合にはシーケンスを利用します。
DROP SEQUENCE [シーケンス名]; CREATE SEQUENCE [シーケンス名] INCREMENT 1 START 1 CACHE 1;

テーブル作成の際に以下のように明記する
CREATE TABLE [テーブル名] ([フィールド名] [型名] PRIMARY KEY DEFAULT nextval('[シーケンス名];
・「PRIMARY KEY」は主キーの宣言です。重複値を許可しないようになります。

■ファイルからテーブル作成

通常コマンドからわざわざテーブル作成やトリガ作成などをするのは少しメンドーなので、 テキストファイルを用意して、そのファイル内に操作内容を入力してそこからテーブル操作をすることができます。

psql -e -f ファイル名
・「e」バックエンドに送ったSQL文を表示します。なにが実行されたかを確認できます。
・「f」ファイルからSQL操作する際のオプション

■バックスラッシュコマンド一覧

\? バックスラッシュコマンド表示
\d テーブル名の一覧を表示
\df 関数の一覧を表示
\do オペレータの一覧を表示
\d [テーブル名] 「テーブル名」の定義を表示
\dS システムテーブルの一覧を表示
\dt ユーザーテーブル一覧を表示
\dT 型の一覧を表示
\enkoding [文字コード] クライアント側の文字コードを設定。文字コードを省略すると現在の文字コードを表示
\pset pager pagerを無効にする
\q psqlを終了する
\l データベースの一覧を表示
\z ACL(アクセス制限)付きでテーブルの一覧を表示
\! [UNIXコマンド] UNIXコマンドを実行する。[UNIXコマンド]を省略するとシェルを起動する
(「\」はバックスラッシュですのでご注意してください。)


オプション

-e バックエンドに送ったSQL文を表示します。
-E \コマンドも含め、バックエンドに送ったSQL文を表示します。
-f [ファイル名] ファイル名から入力を受け付けます
-l データベース一覧を表示し、終了します。
-o [ファイル名] 出力結果を[ファイル名]に格納します。