サーバーを追加する手順

pgAdmin4のインストール後、サーバーを追加する手順です。

 

1.pgAdmin4の「Severs」を右クリック「Create」>「Server」をクリック

 

2.Generalタブの「Name」に何でもよいので名前を入力します。

 

3.Connectionタブの次の項目を入力します

・Host name/address:「localhost」を入力

・Username:「postgres」を入力

・Password:PostgreSQLインストール時に設定したパスワードを入力

 

4.Serversに追加されたのが確認できると思います。

 

CREATE FUNCTIONのテンプレートを用意しました

作成が手間なFUNCTION用にテンプレを用意しました(そのまま実行できるようになってます)。

引数や返り値を変更するだけで簡単に作成ができますので、ぜひ使ってみて下さい。

CREATE OR REPLACE FUNCTION samplefnc
(arg1 character varying,arg2 numeric) -- 引数は2つで作成(arg1 , arg2)
RETURNS boolean
LANGUAGE 'plpgsql' COST 100 VOLATILE AS $BODY$
declare
	--変数宣言
	variable1 character(10);
begin

	--変数に値をセット
	variable1 = 'abc';

	--処理を記載
	raise info '引数1(arg1) : %' , arg1;
	raise info '引数2(arg2) : %' , arg2;
	raise info '変数1(variable1) : %' , variable1;

	-- 返り値はboolean型なのでここはbooleanでリターン(とりあえず)
	return true;
	
end;
$BODY$;


--上の関数を実行
select * from samplefnc('test1',0);

 

あわせて読みたい

上の関数で使用しているraiseは変数の値を画面に表示するために使用しています。詳しくはこちら

https://postgresweb.com/post-2852

 

 

引数や返り値の型を変更する

関数の作成後に、引数や返り値の型を変更するには、一度関数をDROPして下さい。

-- DROP FUNCTIONの実行例
DROP FUNCTION samplefnc(arg1 character varying,arg2 numeric);

 

 

関連記事(関数)

変数の宣言、変数宣言時に代入する、定数を宣言する方法

IF文の書き方(条件分岐)

For文(ループ文)の書き方

配列をループさせる

SQL(SELECT文)の結果をループする方法

SQLの結果を変数に格納する

変数の値を画面に出す(raise)

 

ロールにテーブル、ビューの権限を付与する

ユーザー(ロール)にテーブル、ビューの権限を付与する構文は次のとおりです。

GRANT SELECT ON テーブル名 TO ロール名;          --SELECT権限を付与する
GRANT SELECT ON ビュー名 TO ロール名;            --SELECT権限を付与する
GRANT ALL PRIVILEGES ON テーブル名 To ロール名;  --すべての権限を付与する

 

 

ロールにテーブル、ビューの権限を削除する

削除する構文は次のとおりです。

REVOKE ALL PRIVILEGES ON テーブル名 FROM ロール名;
REVOKE ALL PRIVILEGES ON ビュー名 FROM ロール名;

 

あわせて読みたい

https://postgresweb.com/create-role

 

ユーザー(=ロール)の作成、削除

ユーザー(=ロール)の作成、削除する構文です。

※ PostgreSQLではユーザーをロールといいます。

-- ユーザー(=ロール)を作成する
CREATE ROLE ロール名 WITH LOGIN PASSWORD 'password'; 

--ユーザーの削除
DROP ROLE ロール名; 

 

 

 

ユーザーに関連付けられている特権を削除する

ユーザーに関連付けられている特権を削除する構文です。

ユーザー削除時に、権限が割り当てられていることによりエラーが出るケースがあります。

その際にこの構文を実行して下さい。

-- ユーザーに関連付けられている権限を削除する
DROP OWNED BY ロール名;

 

 

記事一覧

PostgreSQLに関する記事一覧です。(検索用にも)

 

SQL(文字列操作)

文字列の結合、nullの結合

改行コードで結合、置換する

文字数のカウント(length)、バイト数を取得する

文字の切り取り(Left、Right、Substring)

検索文字位置の取得(strpos)

lower(大文字を小文字に変換する)

全角半角スペースを除去する(trim)

upper(小文字を大文字に変換する)

大文字小文字を変換する、区別せず比較する

文字を置換する、複数置換する(replace、translate)

前0埋め、後ろ0埋め(lpad、rpad)

Nullの時に別の値に置き換える

nullif関数

 

 

SQL(数値操作)

数値を文字に変換する(to_char)

絶対値を取得する(ABS)

余りを計算する(mod)、偶数奇数によって処理を分ける

ランダム値を生成する(random)

 

 

SQL(日付操作)

現在日時、システム日時の取得

日時、時刻の書式設定をする(yyyymmdd形式)

日付の加算、週の加算、月の加算

2つの日付の差を計算する

日付の切り捨て(date_trunc)の使い方

誕生日から年齢を計算する

 

 

SQL(配列)

配列の要素数を取得する

配列の先頭・末尾に追加する

 

 

SQL(型変換)

文字から数値、数値から文字へ変換する

文字を日付に変換する、書式を設定する

 

 

SQL

PostgreSQLでdual表の使い方

文字列中にシングルクオーテーションを入れる方法(エスケープ)

Case文(複数条件分岐、Case When)

whereで配列、in句で配列を使う

GROUP BY(グループ化)

月ごとに集計する、年ごとに集計するSQL

ROLLUPを使って合計行を作ってみる

中央値を求める方法

offsetの使い方

 

 

PostgreSQL入門

PostgreSQLとはをわかりやすく解説する(2021年版)

PostgreSQLの読み方

pgAdmin4の使い方(見方から操作まで)

データベースクラスタ(DBクラスタとは)

 

 

PostgreSQLインストール

PostgreSQLのインストール(PostgreSQL13)

PostgreSQLのインストール(PostgreSQL12)

PostgreSQLのインストール(PostgreSQL11)

pgAdmin4の日本語化

インストールなしで使用する(ポータブル版)

WindowsへPostgreSQLのODBCのインストール

 

 

psql

Windowsでpsqlの起動の仕方

sqlファイルをコマンドプロンプトで実行する

psqlでパスワードを省略する

データベースへの接続(pgAdmin)

データベースを切り替えるコマンド

 

 

データベース定義

データベースを作成する

データベースを削除する(DROP DATABASE)

 

 

テーブル定義

テーブルを作成する方法(pgAdminで作成する)

テーブルを作成する方法(CREATE文で作成する)

テーブルを作成する(CREATE TABLE文の構文説明)

テーブルにデータを登録する方法(pgAdmin、INSERT文、UPDATE文での登録)

テーブルのデータを取得する(SELECT文、pgAdmin)

テーブルのデータを削除する方法(pgAdmin、DELETE文での削除)

テーブルに列を追加する、削除する方法、桁数を変更する方法

列にデフォルト値(初期値)を追加・削除する方法

列にNOT NULL制約を追加・削除する方法

データベース、テーブル、列へコメントをつける

外部キーを追加・削除する方法

プライマリーキーとユニークキーの違い

INDEXを追加、削除する

INDEXを再構築する(REINDEX)

なんとなくわかるWindow関数とは

 

 

データ型

文字型の型について整理してみた

textからvarcharへの変換、varcharからtextへの変換の方法

textとvarchar(character varying)の違い

数値型の型について整理してみた

boolean(論理型)について整理してみた

timestampのwithout time zoneとwith time zoneの違い

シーケンス(serial)を作成する

列挙型(ENUM)の書き方

生成列を定義する

 

 

ビュー他

ビュー(VIEW)を作成する、削除する

マテリアライズドビュー(マテビュー)を作成する

 

 

関数

関数(FUNCTION)の作り方・書き方を解説する

CREATE FUNCTIONのテンプレート

関数(FUNCTION)を実行する・呼び出す方法

関数(FUNCTION)を削除する方法

プロシージャ(PROCEDURE)を実行する・呼び出す方法

CREATE PROCEDUREのテンプレート

変数の宣言、変数宣言時に代入する、定数を宣言する方法

IF文の書き方(条件分岐)

比較演算子の紹介

For文の書き方、ループから抜ける方法

While文の書き方、途中で抜ける方法

配列をループさせる

SQLの結果を変数に格納する

SQL(SELECT文)の結果をループする方法

引数にデフォルト値を設定する

変数の値を画面に出す(raise)

コメントの書き方

 

 

ユーザー・ロール

ユーザー(ロール)の作成、削除の方法

ユーザーを作成する(CREATE USER文、CREATEUSER)

ユーザー情報を変更する(ALTER ROLE、ALTER USER)

ユーザーを削除する(DROP USER文、DROPUSER)

CREATE USERとCREATE ROLEの違い

ユーザー(ロール)にテーブル、ビューの権限を付与する、削除する

 

 

システム情報

データベース情報を取得する(ビュー、トリガー、インデックス)

テーブルサイズを確認するSQL

テーブル一覧とデータ件数を取得するSQL

テーブルの列一覧を取得する

template1の文字コードを変更する

データベースのtemplate1、template0とはを調べてみた

Windowsで文字コード(client_encoding)を変更する

データベースの文字コードを変更する

システムカタログとinfomation schema

 

 

メンテナンス

ANALYZEとは

AUTOVACUUMとは

VACUUMとは、VACUUM FULLの実行

CLUSTER(データをインデックス順に並び替える)

データベースのパフォーマンスチューニング

Explainの見方(analyze , cost , scan , sort)についてのまとめ

サービスの停止・再起動コマンド

接続中のセッションを確認する

 

 

バックアップ

pg_dumpコマンドを初心者向けに解説します

pg_dumpでパスワードを省略する(簡単)

pgAdminでデータベースのバックアップを取る方法

データベースをバックアップする(コマンド、bat)

Windowsでpg_dumpとpg_restoreの実行方法

データベース(DB)を復元(リストア)する

 

 

PostgreSQL設定ファイル

接続設定の方法(Windows)

pg_hba.confのmethodに設定する値

ファイルpg_hba.confの場所(Windows)

 

 

エラー対応

エラーを取得する(EXCEPTION)

pgAdmin4が読み込み中のまま起動しない

『'psql' は内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。』の対応

syntax error(SQL 状態: 42601)とは

「ERROR: source database "template1" is being accessed by other users」の対処方法

テーブル削除できない時の対処方法(cannot drop table because other objects depend on it)

pgAdmin4 依存性画面が消えない

エラー「database is being accessed by other users DETAIL:There is other session using the datanase」

postmaster.pidがありませんの対処方法

データが編集できない時の原因と対処方法

 

 

PostgreSQLその他

チートシート作りました

バージョンの違い・変更点まとめ(9、10、11、12)

各バージョンのサポート期限(EOL)のまとめ

予約語、未予約語とは

OIDとは?について調べたことのメモ

pgAdminのマスターパスワードを変更する方法

postgresユーザーのパスワードを忘れた場合の手順

PostgreSQLでバージョン確認を確認する方法・コマンド(windows)

EDB Postgresとは?価格・費用は?

Windows Defenderへ除外登録する

テストデータを作成する(pgbench)

locale(ロケール)とは

PostgreSQLライセンス

 

 

自作関数の実行

自作関数の実行の仕方

 

 

自作関数(文字列)

カンマ区切り文字列の指定カンマ箇所を取得する【自作関数】

文字列の追加したい箇所に文字を入れる【自作関数】

文字列から指定した文字数を削除する【自作関数】

配列に特定の文字列が含まれるかをチェックする【自作関数】

2つの文字列を比較して一致するかチェックする【自作関数】

文字を左のX文字目から○文字切り取る(Mid関数)【自作関数】

文字列から検索文字の位置を取得する(IndexOf)【自作関数】

ひらがなをカタカナに置換する【自作関数】

カタカナをひらがなに置換する【自作関数】

文字列が空であるかのチェック【自作関数】

文字列のバイト数を取得する【自作関数】

検索文字を後ろから検索する(LastIndexOf)【自作関数】

単語の先頭文字を大文字に変換する【自作関数】

文字列中に指定した文字が含まれるかのチェック【自作関数】

全角から半角へ変換する【自作関数】

半角から全角へ変換する【自作関数】

指定した文字の出現回数をカウントする【自作関数】

 

 

自作関数(数値)

数値であるかのチェック(IsNumeric)【自作関数】

四捨五入・切り上げ・切り捨て(Round)【自作関数】

消費税を計算する(8%、10%対応)【自作関数】

数値をカンマで区切る【自作関数】

ランダム値を生成する自作関数(Rand)【自作関数】

Decode関数【自作関数】

引数の最大の整数値を返す(FLOOR関数)【自作関数】

ファイルパス(フルパス)からファイル名を取得する【自作関数】

 

 

自作関数(日付)

曜日を取得する【自作関数】

日付であるかのチェック(IsDate)【自作関数】

日付を加算する(timestamp型)【自作関数】

日付を加算する(Date型)【自作関数】

2つの日付の差を計算する【自作関数】

次の月曜日、火曜日、○曜日を求める(next_day関数)【自作関数】

年月日の文字列から日付を作成する【自作関数】

月末日を取得する(LAST_DAY)【自作関数】

西暦から和暦へ変換する【自作関数】

 

 

自作関数(配列)

2つの配列を結合する【自作関数】

配列の指定箇所に値を入れる(数値)【自作関数】

配列の指定箇所に値を入れる(文字列)【自作関数】

配列が全て空かチェックする【自作関数】

配列の重複値を除外する【自作関数】

 

 

データが編集できない時の原因

pgAdminでテーブルのデータを編集しようとした時、他のテーブルなら編集できるのに、

そのテーブルだけ編集できないといったケースがあるかと思います。

 

おそらく原因は「そのテーブルに主キーが設定されていないから。」です

一度確認してみてください。※ ちなみにINSERTは普通にできますよ。

 

 

対処例:主キーをつけるSQL

主キーをつけるSQLを書いておきますのでご参考まで。

主キーにする列名がNOT NULLになっていない場合、勝手にNOT NULLになります。

主キー列にすでにnull値があった場合、エラーになりますのでご注意下さい。

(null値のデータを消す or 別の値で更新する or 別の列を主キーにする必要があります)

--主キーを追加するSQL(1列だけで主キーの時)
ALTER TABLE テーブル名 ADD CONSTRAINT 主キー名 PRIMARY KEY (列名); 

--主キーを追加するSQL(複数の列で主キーの時)
ALTER TABLE テーブル名 ADD CONSTRAINT 主キー名 PRIMARY KEY (列名1 , 列名2);

 

 

接続設定の方法

ここではPostgreSQLの「他のPCから接続できるための設定の仕方」を説明します。

PostgreSQLのインストール後の初期設定として参考にして下さい。

尚、変更点は2つあり、2つとも必要です。

 

※ また、自分のPC(ローカル環境)で接続するには、この設定は必要ありません。

 

1.postgresql.confの設定

①「postgresql.conf」を開く

postgresql.confというファイルを見つけ、メモ帳(などのエディタ)で開きます。

ファイルは初期フォルダでは次の場所にあります。『C:\Program Files\PostgreSQL\13\data』

 

※ メモ帳で開くには、あらかじめメモ帳を開いておき、

postgresql.confファイルをメモ帳にドラッグ&ドロップすると簡単に開きます。

 

 

②1行だけ内容を変更する。

postgresql.confの59行目(バージョンによって違うかもしれません)くらいに、

listen_addressの記述がある行があるので、そこを編集していきます。

(このファイルで、listen_addressの記述は1か所しかありません。)

 

結果からいうと、変更後の値が「listen_addresses = '*'」になるようにします。

すでにこの状態になっている場合は、この編集操作は必要ありません。

変更点1:先頭に#があったら削除する

変更点2:''の中は、半角のアスタリスク'*'にする

「# what IP …」の箇所はコメントなのでそのままでOKです。

-- 変更前の値
#listen_addresses = 'localhost'
↓
-- 変更後の値(すでにこれになっていた場合は、変更なしでOK)
listen_addresses = '*'		# what IP address(es) to listen on;

 

 

 

2.pg_hba.confの設定

2つ目は「pg_hba.conf」の設定です。

 

①「pg_hba.conf」を開く

pg_hba.confの場所は、この上で紹介しているpostgresql.confと同じ場所にあります。

 

②「pg_hba.conf」を編集する

基本的に変更するのは、IPの箇所のみで大丈夫だと思います。

「host all all」の箇所と、md5の箇所は初期値のままでOKです。

※ md5のところは認証方式

 

ここで紹介している変更後の例は、どのIPでも接続可の設定です。

オンプレの社内テスト環境のような場合であれば、これでもOKかと思います。

-- 変更前
# IPv4 local connections:
host    all             all             127.0.0.1/32         md5

↓

-- 変更後(1行追加)
# IPv4 local connections:
host    all             all             127.0.0.1/32         md5
host    all             all             0.0.0.0/0            md5

 

※ PostgreSQL13(もしかしたら他のバージョンでも)では、上の例で「md5」となっている所が、

「scram-sha-256」となっていると思います。

 

scram-sha-256認証は、以前からある md5 認証よりも安全なものです。

ただし古いバージョンのPostgreSQLでは使用できない点が注意です。

 

 

 

3.PostgreSQLの再起動

設定後、それでも接続がうまくいかない場合は、PostgreSQLの再起動をしてみて下さい。

再起動の方法は、こちらで説明しています。

 

予約語、未予約語とは

予約語・未来語とは、SQL文で使用するキーワードのことです。

例えば、『SELECT』、『FROM』もキーワードの一つです。

 

予約語と、未予約語の違いは、

予約語はテーブルや列名の名前に使用できないのに対し、未予約語は使用できる点です。

※ 仮に予約語をテーブル名に指定した場合、syntax error(文法エラー)になります。

 

PostgreSQLのバージョンごとの予約語、未予約語

PostgreSQLのバージョン毎にも、予約語・未予約語の違いがあるのでリンクを貼っておきます。

PostgreSQL 12

PostgreSQL 11

PostgreSQL 10

PostgreSQL 9.6

PostgreSQL 9.5

 

psqlのエラーメッセージの対応方法

Windowsでpsqlコマンドを打った時、

'psql' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイル

として認識されていません。』のメッセージが表示された時の対応方法です。

 

                psqlのエラーメッセージ

 

対応方法は2つあり、どちらか一方の方法でOKです。

① cdコマンドでpsql.exeのあるフォルダまで移動する

② 環境変数に登録する

簡単なのは①ですが、毎回同じ方法法を取る必要があります。

②は少し手間ですが1度作業してしまえば次回以降はする必要はありません。

 

 

①cdコマンドでpsql.exeのあるフォルダまで移動する

cdコマンドでpsql.exeのあるフォルダまで移動する方法です。

 

次の1~3までの手順で行ってください。

※ この作業はコマンドプロンプトを閉じてしまったら毎回必要です。

 

1.psql.exeのあるフォルダを探す

インストール時に次へ次へで意識せずに進んでいた場合、

次のフォルダに「psql.exe」があると思いますので見つけます。

自分でフォルダを指定した場合は、その配下にあるbinフォルダを見てみて下さい。

 

PostgreSQL12の場合:C:\Program Files\PostgreSQL\12\binフォルダ

         psql.exeのありか(PostgreSQL12の例)

 

2.コマンドプロンプトを開く

キーボードのWindowsボタン(キーボードの左下)+Rを押します。

ファイル名を指定して実行画面が表示されるので、「cmd」と入力しOKボタン。

 

コマンドプロンプトが表示されたら、「cd」と半角スペースを押し、

先ほどの「psql.exe」があるフォルダを入力、または貼り付けます。

※貼り付けは右クリックでできます。

 

貼り付けたらENTERキーでディレクトリを移動します。

ちなみにcdコマンドは、change directoryの略でフォルダ移動のコマンドです。

 

3.動作確認をする(psqlコマンドを入力してみる)

試しに「psql --help」と入力してみて下さい。

ずらずらと使い方の文字が表示されたらpsqlが使えるようになった証拠です。

この後からは普通にログイン等のコマンドが入力できます。

 

うまくいかない場合は、そのフォルダにpsql.exeがあるか等を確認してみて下さい。

 

あわせて読みたい

psqlでログオンする方法はこちらに紹介しています

https://postgresweb.com/post-5407#h2-2

 

 

 

② 環境変数に登録する

二つ目は環境変数に登録する方法です。

次の1~3までの手順で行ってください。

 

1.psql.exeのあるフォルダを探す

インストール時に次へ次へで意識せずに進んでいた場合、

次のフォルダに「psql.exe」があると思いますので見つけます。

自分でフォルダを指定した場合は、その配下にあるbinフォルダを見てみて下さい。

 

PostgreSQL12の場合:C:\Program Files\PostgreSQL\12\binフォルダ

         psql.exeのありか(PostgreSQL12の例)

 

2.環境変数画面を開く

エクスプローラーのPCを選択した状態で、

右クリックのプロパティをクリックします。

 

左のメニューからシステムの詳細設定をクリック。

 

詳細設定タブの環境変数をクリック。

 

上部のPathを選択し、編集ボタンをクリックします。

 

右上の新規ボタンを押します。

 

1で確認した、psql.exeのあるフォルダを入力します。

画面の例では、「C:\Program Files\PostgreSQL\12\bin」としています。

 

ここまでで環境変数の登録が完了しました。

 

3.動作確認をする(psqlコマンドを入力してみる)

試しにコマンドプロンプトを開き「psql --help」と入力してみて下さい。

ずらずらと使い方の文字が表示されたらpsqlが使えるようになった証拠です。

この後からはコマンドが入力できます。

 

この環境変数の登録作業は一度のみでOKです。

登録してもうまくいかない場合、環境変数の登録後一度再起動してみてください。

sqlファイルをマンドプロンプトで実行する

「.sql」ファイルをコマンドプロンプトから実行する例です。

※ パスワードを聞いてくるのを省略するには、こちらを参照して下さい。

psql -f sqlファイルのパス -U ユーザー名 -d データベース名 -h 接続先 -p ポート

-- 実際の例
-- sqlファイルのパスを「"C:\sql\test.sql"」とします。
psql -f C:\script\test.sql -U postgres -d schooldb -h localhost -p 5432