PostgreSQL はじめてのコマンド操作

0
1097
views

まずは DBサーバの状態を確認します。

pg_ctl status

サーバが未起動の場合は起動してあげましょう。

pg_ctl start -l c:\postgresql-9.6.3\logs\postgresql.log

サーバが起動するはずです。

ログの保存場所のパスをキータイプするのが面倒な場合は、次のようにタイプします(コマンドプロンプトの予測補完機能の利用)。

例:(下記の<TAB>でキーボードの[Tab]キーを押します)
c:\pos<TAB>
→c:\pospostgresql-9.6.3

c:\pospostgresql-9.6.3\log<TAB>
→c:\postgresql-9.6.3\logs

c:\postgresql-9.6.3\logs\<TAB>
→c:\postgresql-9.6.3\logs\postgresql.log

psql での基本操作

スーパユーザ postgres でログイン

psql -U postgres
 パスワード:

パスワードを求められます。初期パスワードは postgres です。

ユーザ作成

新規ユーザ foodshopmaster を作成します。パスワードは ‘foodshopmaster’ で設定します。

CREATE USER foodshopmaster WITH PASSWORD 'foodshopmaster' CREATEDB;

データベース作成

新規データベース foodshop を作成します。

CREATE DATABASE foodshop
 WITH OWNER = foodshopmaster
 ENCODING = 'UTF8';

データベースにログイン

ユーザ foodshopmaster でデータベース foodshop に移動します。

\c foodshop foodshopmaster

テーブルの作成

新規テーブルを作成します。

CREATE TABLE fresh_fish
(
    fresh_fish_id INTEGER,
    fish_code INTEGER,
    fish_name VARCHAR(30),
    district VARCHAR(30),
    unit_price INTEGER,
    PRIMARY KEY(fresh_fish_id)
);

テーブルのユーザを foodshopmaster にします。

ALTER TABLE fresh_fish
OWNER TO foodShopmaster;

データの投入

テーブルにデータを投入します。

INSERT INTO fresh_fish(
    fresh_fish_id, fish_code, fish_name, district, unit_price)
VALUES (001, 101, 'いわし', '岩手', 80),
       (002, 101, 'いわし', '静岡', 90),
       (003, 302, 'かれい', '三重', 240),
       (004, 103, 'さば', '三重', 150),
       (005, 501, 'さけ', '北海道', 120),
       (006, 501, 'さけ', 'ノルウェー', 120),
       (007, 704, 'いか', '淡路', 220),
       (008, 202, 'ほっけ', '青森', 360);

テーブルの表示

テーブルに投入したデータを一覧にします。

select * from FreshFish;

結果:

 fresh_fish_id | fish_code | fish_name |  district  | unit_price
---------------+-----------+-----------+------------+------------
             1 |       101 | いわし    | 岩手       |         80
             2 |       101 | いわし    | 静岡       |         90
             3 |       302 | かれい    | 三重       |        240
             4 |       103 | さば      | 三重       |        150
             5 |       501 | さけ      | 北海道     |        120
             6 |       501 | さけ      | ノルウェー |        120
             7 |       704 | いか      | 淡路       |        220
             8 |       202 | ほっけ    | 青森       |        360
(8 行)

テーブルを初期化

テーブルを空にします。

truncate fresh_fish;

結果:

 fresh_fish_id | fish_code | fish_name | district | unit_price
---------------+-----------+-----------+----------+------------
(0 行)

テーブルの削除

テーブルを削除します。

drop table fresh_fish;

結果:

 ERROR: リレーション"fresh_fish"は存在しません
 行 1: select * from fresh_fish;

ログアウト

データベースからログアウトします。

\q

再びスーパユーザ postgres でログイン

psql -U postgres

ユーザ一覧

ユーザ一覧を表示します。

\du
                                                         ロール一覧
    ロール名    |                                              属性                                              | メンバー
----------------+------------------------------------------------------------------------------------------------+----------
 foodshopmaster | DBを作成できる                                                                                 | {}
 postgres       | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション, 行単位セキュリティを無視 | {}
 sampler        | DBを作成できる                                                                                 | {}

データベース一覧

データベース一覧を表示します。

\l
                                                   データベース一覧
      名前      |     所有者     | エンコーディング |      照合順序      | Ctype(変換演算子)  |      アクセス権
----------------+----------------+------------------+--------------------+--------------------+-----------------------
 foodshop       | foodshopmaster | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 |
 postgres       | postgres       | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 |
 sampledb       | sampler        | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 |
 template0      | postgres       | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 | =c/postgres          +
                |                |                  |                    |                    | postgres=CTc/postgres
 template1      | postgres       | UTF8             | Japanese_Japan.932 | Japanese_Japan.932 | =c/postgres          +
                |                |                  |                    |                    | postgres=CTc/postgres
(5 行)

データベースの削除

データベース foodshop を削除します。

DROP DATABASE IF EXISTS foodshop;

ユーザ の削除

ユーザ foodshopmaster を削除します。

DROP USER IF EXISTS foodshopmaster;