PostgreSQLのインストールからテーブル作成までの手順【Ubuntu】

2019年7月21日

Ubuntu18.04にPostgreSQLをインストール~テーブル作成するまでの手順を超詳しく解説します。

このページは以下の公式サイトに沿ったやり方でインストール作業を行います。
https://wiki.postgresql.org/wiki/Apt

この記事を読んでも分からないところがあったり、
記事の内容に誤りを見つけた方はコメントにてお知らせください。

それでは、実際に進めていきましょう。

実行環境

OS: Ubuntu 18.04.2 LTS
python: 3.6.8

インストール手順

インストール手順を説明していきます。

①鍵の入手

インストールしようとしているPostgreSQLが本物か確認できる様にリポジトリキーというものを使います。
このキーを利用することで不正に改ざんされたPostgreSQLをインストールさせられてしまうことを防ぐことができます。

以下の手順で鍵を入手し、ホストマシン(OS自体)に登録します。

# 鍵のインストール、PostgreSQL利用に必要なパッケージをインストール。
$ sudo apt install curl ca-certificates gnupg

# 鍵を取得し、その鍵を登録する
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

②PostgreSQLの公式リポジトリを登録

“apt”コマンドでubuntuで使うパッケージを管理出来ます。
この手順ではPostgreSQLの公式が配布してくれているリポジトリをaptで管理できる様にしています。

# "/etc/apt/sources.list.d/pgdg.list"ファイルを作成。
# このファイルには利用するリポジトリの場所だったり、種類だったりの詳細を記載し、aptで管理できるようにする。
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

③PostgreSQLのインストール

# パッケージの参照先情報を最新にする(これをしないと最新ではないパッケージをインストールしてしまうことがある)
$ sudo apt update

# PostgreSQLをインストールする
$ sudo apt install postgresql

これでインストール作業は完了です。

PostgreSQLにログイン

ここからはPostgreSQLへのログイン手順について解説します。

①起動

インストールしただけではPostgreSQLは停止した状態なので起動させます。

$ /etc/init.d/postgresql start
[ ok ] Starting postgresql (via systemctl): postgresql.service.

/etc/init.d/postgresqlはPostgreSQLのインストールと同時に作成されます。
“start”を指定した時は起動。”stop”にした時は停止。”status”とすると現在の起動状態が分かります。

②ログイン

インストール直後、PostgreSQLにログインできるユーザーはインストールと同時に作成されるユーザー”postgres”のみです。(OSのユーザーとしての”postgres”とPostgreSQLのユーザーとしての”postgres”の2人ができます。ここわかりにくい部分なので要注意です。)

PostgreSQLにログインするため一度OSのユーザーとしての”postgres”にユーザー切り替えを行った後、PostgreSQLにログインします。

# postgresユーザーには初期パスワードが設定されていないので設定
$ sudo passwd postgres

# ユーザー変更
$ su - postgres

# 現在のOSユーザー名と同じ名称のPostgreSQLユーザーでPostgreSQLにログインする
$ psql

以下のコマンドの”username”を任意のユーザー名に変更すれば、そのユーザーでPostgreSQLにログインすることが可能です。ただし、設定したユーザーがOSユーザーではなく、PostgreSQLのユーザーとしても登録されている必要があります。

$ psql -U username

以下の様な表示が出力されればログイン成功。

$ psql
psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1))
Type "help" for help.
postgres=# 

DB作成

PostgreSQL自体はデータベース(以後DB)ではなく、DBを管理するためのパッケージ(便利ツール)です。DBを作成するためには下記のコマンドを実行する必要があります。

# database_nameという名前のDBを作成する。所有者はpostgresに設定
postgres=# CREATE DATABASE database_name OWNER postgres;
CREATE DATABASE

“\l”コマンドでDBが作成されているか確認します。

postgres=# \l                                    List of databases
     Name      |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
---------------+----------+----------+-------------+-------------+-----------------------
 database_name | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
 template1     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
               |          |          |             |             | postgres=CTc/postgres
(4 rows)

一番上に追加したdababase_nameと言う名のDBが作成されていることが分かります。

それでは作成したDBに入ります。

# \c DB名 で任意のDBに入ることが出来る
postgres=# \c database_name
You are now connected to database "database_name" as user "postgres".
database_name=#

テーブル作成

DB内には複数のテーブルを作成することができます。以下の様な「ID」「name」「atuchor」3つのカラム(列)を持ったbookテーブルを練習として作成してみましょう。

IDnameauthor
1我輩は犬であった冬目漱岩
2人間合格太宰傷

作成コマンド

# integer型のidカラム,varchar(10)型(10文字までの文字列)のnameカラム,
# varchar(10)型のauthorカラムをもったbookと言う名のテーブルを作成する
database_name=# CREATE TABLE book (id integer, name varchar(10), author varchar(10));
CREATE TABLE

# 作成されているテーブルを確認
database_name=# \dt
        List of relations
 Schema | Name  | Type  |  Owner
--------+-------+-------+----------
 public | book  | table | postgres
(1 row)

# bookテーブルの中身を確認
database_name=# SELECT * FROM book;
 id | name | author
----+------+--------
(0 rows)

値が格納されていないbookテーブルが出来上がりました!

値の格納

# bookテーブルに行を追加
# ()で囲まれているのが一つの行に当たる
database_name=# INSERT INTO book VALUES (1, '我輩は犬であった', '冬目漱岩'), (2, '人間合格', '太宰傷');
INSERT 0 2
# 格納後のテーブル内容確認
database_name=# SELECT * FROM book;
 id |       name       |  author
----+------------------+----------
  1 | 我輩は犬であった   | 冬目漱岩
  2 | 人間合格      | 太宰傷
(2 rows)
database_name=#

追加されました。
これで作りたかったテーブル完成です!

IDnameauthor
1我輩は犬であった冬目漱岩
2人間合格太宰傷

まとめ

ここまで実行したことを振り返ります。

  1. PostgreSQLのインストール
  2. PostgreSQLへのログイン
  3. DB作成
  4. テーブル作成
  5. 値格納

以上。

テーブルの作成方法はたくさんありますが、今回は一番基本的な作り方を紹介しました。

基本を覚えておけば応用的な作り方をする際にも簡単に理解することができます。何度も読み直して頭に叩き込みましょう。

参考にしたサイト