ホビーユースの開発でデータベース(DBMS)を用いる場合、無料で利用できるオープンソースDBMSとしてPostgreSQLやMySQL、noSQLDBだとMongoDBなんかを使うと思いますが、たぬパパはプライベートではPaasクラウド「Heroku」をよく利用するので、Heroku上で無償枠のあるPostgreSQLを使うようにしています。
※日本PostgreSQLユーザ会 https://www.postgresql.jp/
マニュアルの日本語訳なんかを入手できます。
オープンソースRDBMSとしてのPostgreSQLの立ち位置
RDBMSとしてのPostgreSQL、MySQLの違いですが、昔は多機能・高可用性ならPostgreSQL、高速性ならMySQLでしたが、最近ではあんまり差が無くなってきているようです。
※MySQLはOracleが買収して提供するようになってからどんどん多機能になっているようです。
DBMSとしてはOracle、MySQL、SQLServerに次いでランキング4位ですが、日本国内では特にシェアが高く、業務用システムとしての利用が多いのも特徴です。
※DB-Engines Ranking https://db-engines.com/en/ranking
ここではPostgreSQLの環境構築についてご紹介します。
PostgreSQLのインストール
ダウンロード
インストーラをEDB 社のダウンロードサイトより入手します。
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

Windows x86-64 最新版の13.4を入手します。
インストール
ダウンロードできたらインストーラをクリックします。
ダイアログが表示されるので、アプリの名前や発行元を確認の上、問題なければ、「はい」をクリックします。
Setup画面が表示されるので、「Next >」をクリック

Setup画面が表示されるので、「Next >」ボタンをクリックします。

インストールするコンポーネントを聞いてきますが、特にディスクが逼迫してなければそのまま「Next」ボタンをクリックします。
| コンポーネント名 | 説明 |
| PostgreSQL Server | PostgreSQL のサーバ本体 |
| pgAdmin 4 | PostgreSQL の管理や操作を行う GUI ツール |
| Stack Builder | PostgreSQL の周辺ツールをインストールするユーティリティ |
| Command Line Tool | PostgreSQL のコマンドラインツールとライブラリ |
データファイルのディレクトリを聞いてくるので、変更がなければそのまま「Next >」ボタンをクリックします。

superuserであるpostgresのパスワードを設定します。
DB接続に必要となるのでメモっておきましょう。
メモったら「Next >」ボタンをクリックします。

クライアント接続の受付ポート番号を聞いてきますが、これも複数バージョンのPostgreSQLを運用しているなどなければデフォルトの5432のままで良いかと思います。
「Next >」ボタンをクリックします。

ロケールはCを設定してください。
Japanese,japanも設定できますが、よく問題が起きるようです。
「Next >」ボタンをクリックします。

今までに設定した内容が一覧表示されるので、問題なければ「Next >」ボタンをクリックします。

準備完了のダイアログが表示されるので、覚悟が決まったら(なんの?)「Next >」ボタンをクリックしてインストール開始します。


完了のダイアログが表示されたら「Finish」ボタンをクリックして完了です。

動作確認
実際にDBに接続してみます。
スタートメニューの PostgreSQLより「SQL Shell (SQL)」をクリックします。

接続先を聞いてくるので、すべてデフォルト([localhost]とか書いてある)で「Enter」キーをクリックしていくと、ユーザpostgresのパスワードを聞いてくるので先ほどメモったパスワードを入れて「Enter」キーをクリックします。
PostgreSQLの標準クライアントツールpsqlが起動します。
データベースに正常に接続できると、postgres=# が表示されるので\l と入力して登録済のDB一覧を表示します。確認が済んだら、\q を入力してpsqlを終了します。

うまく接続できない場合はちゃんとDBが起動しているか確認します。
Windows管理ツールのサービスを起動します。

名前の欄からpostgresql-x64-xxを探して状態が「実行中」、スタートアップの種類が自動になっていたらちゃんと起動できているはずです。。
※xxはバージョン番号が入ります。バージョン13の場合はpostgresql-x64-13となります。
「実行中」以外であればpostgresql-x64-xxを右クリックして起動してみてください。

postgresql-x64-xxをダブルクリックするとプロパティが表示されるので、自動起動したくない場合にはスタートアップの種類(E)で手動を選択しておいてください。
※メモリが足らないとか

起動していない、もしくは右クリックして起動しない場合はインストールが正常に完了していない場合があります。※そんなことは一度もありませんでしたが。
postgresqlをアンインストールしてもう一度試してみてください。
Power Shellで利用できるように設定する
SQL Shell を使えばコマンドラインでの利用は一応できるのですが、他アプリとの連携やherokuのPostgreSQLを利用しやすくするために、PowerShellでpsqlが使えるようにします。
PowerShellを立ち上げてpsqlコマンドを実行しても、このようにエラーが表示されます。

これは PowerShellがpsqlコマンドの場所がわからないために起きているので、WindwosにPATHを設定してあげる必要があります。
windowsの左下にある検索ウィンドウにpathと入力するといくつか候補が表示されるので、「システム環境変数の編集」をクリックします

システムのプロパティダイアログが起動し、詳細設定のタブが表示されるので「環境変数」ボタンをクリックします。

ユーザー環境変数のPathを選択し、「編集(E)」ボタンをクリックします。

環境変数名の編集が表示されるので、新規ボタンをクリックしPostgreSQLインストール先ディレクトリのbinディレクトリを入力し「OK」ボタンをクリック。ダイアログを閉じます。
※デフォルトの場合は多分 C:\Program Files\PostgreSQL\13\bin

確認のため再度WindowsPowerShellを立ち上げて
psql –version
を入力します。
psql (PostgreSQL) 13.4
と表示されたら成功です。
※13.4はインストールしたバージョンによって異なります。

データベースを利用してみる
新しいデータベースを作成する
PowerShellからpsqlを起動します。
psql を使って PostgreSQL へ接続するには次のように実行します。
psql -h ホスト名 -p ポート番号 -U ロール名 -d データベース名先ほどインストールしたPostgreSQLに接続する場合は,
psql -h localhost -p 5432 -U postgres -d postgresとなりますが、ホスト名、ポート番号はデフォルトのままで良ければ省略可能。
データベース名は省略するとロール名と同じ値が採用されるので、この場合は省略可能。
ロール名を省略するとOSのログインユーザ名が採用されるので、ここだけpostgres(インストール時にユーザ名を変えた場合はその名前)を入力しましょう。
※ロール名はPostgreSQLではざっくりいうとユーザ名とグループ名のことを指しています。
よってこの場合は、
psql -U postgresを入力すればOKです。
パスワードを聞いてくるので、先ほどメモったパスワードを入力すると、psqlが起動します。
CREATE DATABASEして新しいデータベースを作成します。
CREATE DATABASE test;\lを入力してデータベース一覧を表示するとtestが作成されたことがわかります。

データベースに接続する
次に作成したデータベースtestに接続しましょう。
psql起動時にデータベース名を指定してもよいのですが、このままpsqlのメタコマンド\cを使ってみましょう。
※その場合はpsql -U postgres -d testとなる。
\c testデータベース”test”にユーザ”postgres”として接続しました。と表示され、プロンプトも
test=#に変化したことがわかります。

テーブルを作成する
次にテーブルを作成しましょう。
メタコマンド\dtで現在登録されているテーブル一覧を表示できます。
テーブルが一つもないので、リレーションが見つかりませんでしたと怒られました。

create tableで新しいテーブルを作成します。
create tableの文法は下記の通り。
create table 【テーブル名】 (【カラム名】 【データ型】,繰り返し);
ここでは下記の通り入力してnewtable1を作成します。
create table newtable1 (id int, name varchar(10));再度\dtで一覧表示すると、newtable1が登録されたことがわかりました。

テーブルにレコードを追加する
次に作成したテーブルにinsert文でレコードを追加してみましょう。
insertを使って1レコード追加する文法は下記の通り。
insert into 【テーブル名】(【カラム名】,繰り返し) values (【値】,繰り返し);
※カラム名は値を入力したいカラムだけ指定できます。ほかにも記法があります。
ここでは下記の通り入力してレコードを一件追加します。
insert into newtable1(id,name) values (1,'tanupapa');登録したレコードをselectして確認してみます。
select * from newtable1;無事一件追加できたことが確認できました。





コメント