Open5

postgreSQLの操作方法を叩き込む

TansanSui-H2CO3TansanSui-H2CO3

はじめに

皆様、お疲れ様です。

このスクラップでは、PostgreSQLを初めて触る私が操作に詰まったので、実行結果を残しながら頑張って体にしみこませていきます。

また、私のスキルですが...

  • DB(Oracle、MySQL)は触ったことがある。
  • 外部結合・内部結合くらいはわかる。

みたいになっています。

ちなみに、実行環境はWSL2です。それでは、よろしくお願いいたします。

TansanSui-H2CO3TansanSui-H2CO3

aptでインストールしよう

とにもかくにも、インストールしなくては始まりません。なので、aptを使ってインストールしていきましょう。公式ページはこちらです。

$ sudo apt install curl ca-certificates gnupg
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ sudo apt update
$ sudo apt install postgresql-13

バージョン確認でインストールに成功したのかを確認しましょう。バージョン情報が出たら、インストール成功です。

$ psql --version
psql (PostgreSQL) 13.3 (Ubuntu 13.3-1.pgdg20.04+1)

やったぜ。

TansanSui-H2CO3TansanSui-H2CO3

デフォルトユーザ(postgres)でログインしよう

インストールができたら、とりあえずログインしましょう。
インストール時にデフォルトユーザであるpostgresが登録されていますので、このユーザでログインです。sudoのパスワードを入力してログインしましょう。

$ sudo -u postgres -i
postgres@:~$

sudo権限でログインしても、まだ終わりじゃありません。psqlコマンドでもう一段階深い階層まで入りましょう。

postgres@:~$ psql
psql (13.3 (Ubuntu 13.3-1.pgdg20.04+1))
Type "help" for help.

postgres=#

ここまできて、ようやくsqlコマンドを利用できるようになりました。

続いて、パスワードが設定されていないデフォルトユーザpostgresにパスワードを設定してあげましょう。

****には任意のパスワードを入れてね。
postgres=# ALTER ROLE postgres PASSWORD '****'

パスワードが設定できたら、ログアウトして、もともとのシェルまで戻りましょう。2段階目のシェルから1段階目のシェルにログアウトするときは、\qを使用しましょう。

1段階目に戻るよ。
postgres=# \q
postgres@:~$

1段階目のシェルから元々のシェルにログアウトするには、exitを使用します。

もとのシェルに戻るよ。
postgres@:~$ exit
logout
$ 

それでは、1段階目のシェルを経由せず、一気に2段階目のシェルにログインしてみましょう。一気にログインするためには、psqlコマンドを使用します。

****にさっき設定したパスワードを入力してね。
$ psql -h localhost -U postgres
Password for user postgres:****
psql (13.3 (Ubuntu 13.3-1.pgdg20.04+1))
Type "help" for help.

postgres=#

ここまでで、

  • sudo権限を用いた無理やりログイン
  • デフォルトユーザへのパスワード設定
  • ログアウト
  • psqlを使用した正規のログイン

...についてできるようになりました。

参考資料

TansanSui-H2CO3TansanSui-H2CO3

データベースを指定してログインしよう

この次のトピックで新しいデータベースを追加しますが、そんなときにログイン時にデータベースを指定したくなります。実現するためには-dオプションを加えた以下のコマンドを使用します(test_dbは次のトピックで追加するデータベース名です)。

$ psql -h localhost -U postgres -d test_db
Password for user postgres:****
psql (13.3 (Ubuntu 13.3-1.pgdg20.04+1))
Type "help" for help.

test_db=#

これで一件落着です。

TansanSui-H2CO3TansanSui-H2CO3

データベースを作ってみよう

psqlでログインした皆様の目の前には、以下のようなコンソールが映っているかと思います。

postgres=#

ここで注意したいのは、コンソールに書いてあるpostgresがユーザ名ではなく、データベース名であるということです。ログイン時にデータベース名を指定しないと、デフォルトであるpostgresという名前のデータベースにログインします。

なんだか、初期状態ではどんなデータベースが用意されているのかが気になってきました。なので、\lコマンドを使用してデータベースのリストを表示してみましょう。

postgres=# \l

表示されたリストはこんな感じ。表示を終了したい場合は、qを押しましょう。git logコマンドの表示終了方法と一緒ですね。

                                     List of databases
          Name          |   Owner   | Encoding | Collate |  Ctype  |   Access privileges
------------------------+-----------+----------+---------+---------+-----------------------
 postgres               | postgres  | UTF8     | C.UTF-8 | C.UTF-8 |
 template0              | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
                        |           |          |         |         | postgres=CTc/postgres
 template1              | postgres  | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
                        |           |          |         |         | postgres=CTc/postgres
(3 rows)

(END)

ここにある3種類のデータベースはそれぞれ以下のような特徴を持っています。

DB名 特徴
postgres デフォルトDB
template0 CREATE DATABASEのテンプレート
template1 CREATE DATABASEのテンプレート

template0template1の違いについては、このサイトを参考にしてみてください。今のところ、template0を使用すると「まっさらな」データベースが生成される、template1を使用すると「ちょっと加工された」データベースが生成される、くらいの認識です。

デフォルトのデータベース配置が理解できたところで、新しいデータベースを登録してみましょう。コマンドは通常のSQL文です。

postgres=# CREATE DATABASE test_db;
CREATE DATABASE

ここまでできたら、再度データベースリストを\lで確認してみましょう。新しくtest_dbという名前のデータベースが追加されていることがわかりますね。

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

(END)

それでは、データベースをtest_dbに切り替えてみましょう。切り替えコマンドは\cです。

postgres=# \c test_db
You are now connected to database "test_db" as user "postgres".
test_db=#

これで、今回の目標は達成です。