【Ubuntu】PostgreSQLインストール〜テーブル作成までの手順解説

2019年7月21日

当サイトのリンクには広告が含まれています。

この記事ではPostgreSQLの以下の点について解説しています。

  • PostgreSQLのインストール方法
  • PostgreSQLへのログイン方法
  • PostgreSQLでのデータベース作成方法
  • PostgreSQLでのテーブル作成方法

それでは、早速進めていきましょう。

著者環境

OS: Ubuntu 18.04.2 LTS
python: 3.6.8

インストール手順

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

①鍵の入手

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

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

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

# 鍵を取得し、その鍵をaptで利用するように登録する
$ 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インストール直後に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=# 

データベース作成

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=#

テーブル作成

1つのDBには複数のテーブルを作成することができます。以下の様な「ID」「name」「author」の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. レコード作成

以上。

テーブルの作成方法はたくさんありますが、今回は一番基本的な作り方を紹介しました。基本を覚えておけば応用的な作り方をする際にも簡単に理解することができます。何度も読み直してテーブル作成までの流れを頭に叩き込みましょう。

参考にしたサイト

直近でおすすめの本

直近十数冊読んだ中で一番おすすめの本です。

人が行動をするに至るまでのステップを科学的に分析した上で、その結果を習慣と紐付けて解説してくれている本です。

悪い習慣を断ち、良い習慣を継続する方法を詳細に説明してくれています。習慣が人を作っているので、この本の内容を実践できれば人生を大きく好転させられる気がしました。

この本の最初の方に説明があるのですが、複利という考え方があり毎日1パーセントだけの増加でもそれが続くととてつもない倍率になります。これは投資でよく用いられる概念ですが、良い習慣は未来への投資なので習慣にもあてはまります。良い習慣を身に付けるのは早ければ早いほど良いです。

私はまず長時間YouTubeを見てしまう習慣を断って、直近の業務に役立つITの勉強を習慣として身に付けよう思います。