トップページ -> インストール,設定,利用 -> PostgreSQL -> PostgreSQL 12 のインストール,データベース作成,テーブル定義とレコード挿入(Ubuntu 上)
[サイトマップへ], [サイト内検索へ]

PostgreSQL 12 のインストール,データベース作成,テーブル定義とレコード挿入(Ubuntu 上)

Ubuntu に,PostgreSQL 12 のインストールを行う. そして,データベース生成,テーブル定義を行ってみる.

※ インストールは,https://wiki.postgresql.org/wiki/Apt に記載の手順に従う.

【このページの目次】

  1. 前準備
  2. PostgreSQL 12 のインストール(Ubuntu 上)
  3. インストール後の確認
  4. PostgreSQL データベースサーバの起動と終了
  5. PostgreSQL データベースファイルの作成
  6. PostgreSQL サーバの起動,PostgreSQL データベースの作成と権限の設定
  7. テーブル定義とレコード挿入

サイト内の関連ページ: データベースのことを含む各種教材は別ページにまとめている.

参考Webページ:


前準備

OS のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行.

sudo apt update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now
>

PostgreSQL 12 のインストール(Ubuntu 上)

https://wiki.postgresql.org/wiki/Apt に記載の手順に従う.

  1. レポジトリキーのインストール

    sudo apt -y install curl ca-certificates gnupg
    curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    

    [image]
  2. パッケージリストの取得
    sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    

    [image]
  3. パッケージ情報の更新
    sudo apt -y update
    
  4. インストール
    sudo apt -y install postgresql-12 
    

    [image]
  5. インストール終了の確認

    [image]
  6. インストール直後に,確認のため,PostgreSQL データベースサーバを手動で起動して停止してみて,エラーメッセージが出ないことを確認する

    このとき,「PostgreSQL サービスアカウント」の権限で,PostgreSQL データベースサーバを起動する.

    パスワードは,「自分のパスワード」を入れること.

    sudo -u postgres service postgresql start
    sudo service postgresql stop
    

    [image]

    [image]
  7. Ubuntu の再起動

    なお,Ubuntu の起動のとき,PostgreSQL は自動で起動する.

    /sbin/shutdown -r now
    

インストール後の確認

  1. PostgreSQL サービスアカウント (service account)の確認

    PostgreSQL サービスアカウントは,Postgres サーバの起動等に使うもの.

    Ubuntu でパッケージを使って PostgreSQL をインストールすると,PostgreSQL サービスアカウント(ユーザ名は「postgres」)が自動的に作成される.

    次のコマンドで確認できる.

    sudo cat /etc/passwd | grep postgres
    

    ※ 「x」は no password という意味(パスワードがないという意味ではない)

    [image]

    PostgreSQL サービスアカウントは Linux が管理するアカウントのこと.PostgreSQL が管理するアカウントとは別のものである.


PostgreSQL データベースサーバの起動と終了

PostgreSQL データベースサーバの再起動

このとき,「PostgreSQL サービスアカウント」の権限で,PostgreSQL データベースサーバを起動する.

パスワードは,「自分のパスワード」を入れること.

sudo -u postgres service postgresql restart
service postgresql status

[image]

PostgreSQL データベースサーバの終了

sudo service postgresql stop 
service postgresql status

[image]

PostgreSQL データベースファイルの作成

事前に決めておく事項

PostgreSQL のデータベースファイルの作成

ここでは,データベースディレクトリは /var/lib/postgresql/data とする.

ファイルの所有者は,「PostgreSQL サービスアカウント」にする.

  1. データベースディレクトリの作成と権限の設定

    sudo mkdir /var/lib/postgresql/data
    sudo chown -R postgres:postgres /var/lib/postgresql/data
    

    [image]
  2. データベースファイルの作成

    sudo -u postgres /usr/lib/postgresql/12/bin/initdb --encoding='UTF-8' -D /var/lib/postgresql/data
    

    [image]

PostgreSQL データベースの作成と権限の設定

事前に確認しておく事項

  1. 「PostgreSQL データベース管理者のユーザ名」で,psql を用いて接続.

    sudo -u postgres psql -U postgres
    

    [image]
  2. データベース名と,オーナと,文字コード(エンコーディング)を指定して,データベース生成

    SQL の create database コマンドを使用.

    文字コード(エンコーディング)UTF8で, データベース名 testdb のデータベースを作成したいときは, 次のように操作する.

    create database testdb owner postgres encoding 'UTF8';
    

    [image]
  3. psql の終了
    \q
    

    [image]
  4. 確認のため,データベースの一覧表示を行なってみる

    PostgreSQL の場合,データベースの一覧表示は,「psql -l」で行う.

    sudo -u postgres psql -U postgres -l
    

    [image]

テーブル定義とレコード挿入

  1. 「PostgreSQL データベース管理者のユーザ名」で,psql を用いて接続.

    sudo -u postgres psql -U postgres -d testdb
    

    [image]
  2. SQL を用いたテーブル定義

    create table order_records (
        id            integer primary key not null,
        year          integer not null CHECK ( year > 2008 ),
        month         integer not null CHECK ( month >= 1 AND month <= 12 ),
        day           integer not null CHECK ( day >= 1 AND day <= 31 ),
        customer_name text not null,
        product_name  text not null,
        unit_price    real not null check ( unit_price > 0 ),
        qty           integer not null default 1 check ( qty > 0 ),
        created_at    timestamp with time zone not null default current_timestamp,
        updated_at    timestamp with time zone not null default current_timestamp,
        check ( ( unit_price * qty ) < 200000 ) );
    

    [image]
  3. SQL を用いたレコード挿入

    begin transaction;
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1, 2020, 7, 26,  'kaneko', 'orange A', 1.2, 10 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 2, 2020, 7, 26,  'miyamoto', 'Apple M',  2.5, 2 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 3, 2020, 7, 27,  'kaneko',   'orange B', 1.2, 8 );
    insert into order_records (id, year, month, day, customer_name, product_name, unit_price) values( 4, 2020, 7, 28,  'miyamoto',   'Apple L', 3 );
    commit;
    

    [image]
  4. 確認表示

    select * from order_records;
    

    [image]
  5. 更新し確認表示

    begin transaction;
    update order_records set unit_price = 11.2 where id = 1;
    commit;
    select * from order_records;
    
  6. テーブル一覧の表示
    \d
    

    [image]
  7. psql の終了
    \q
    

    [image]

本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]