🐘

PostgreSQL コマンド メモ

に公開

基本操作

全データベース表示

psql -l 

データベースのリスト表示

\l

データベースに入る

psql "データベース名"

テーブル一覧を表示

team3db=> \d 

テーブル削除

team3db=> drop table "テーブル名"; 
DROP TABLE 

テーブルの内容参照

team3db=> select "列名" from "テーブル名"

Ex) select name from ab_menu;
Ex) select * from ab_menu;
(*はすべての列の意味)

カラムのデータ型変更

ALTER TABLE "テーブル名" ALTER COLUMN "カラム名" TYPE "データ型"; 

データの挿入

INSERT INTO "テーブル名" VALUES (22, 'Cheese', 9.99); 

複数は→

INSERT INTO "テーブル名" VALUES (22, 'Cheese', 9.99), (42, 'Chee', 9.47); 

(推奨?)

INSERT INTO テーブル名 ("カラム名1", "カラム名2", "カラム名3") VALUES (22, 'Cheese', 9.99); 

データの削除

delete from "テーブル名" where  "カラム名"='データ'; 

ex) delete from myschema.accesslog where type='search';

全データ削除

delete from テーブル名; 

備考

スタート

sudo service postgresql start

起動しているか確認

sudo service postgresql status

終了

sudo service postgresql stop

ロールのリスト

\du

ユーザの作成

CREATE ROLE "ユーザ名";

CREATE ROLEのオプション
ex) CREATE ROLE "ユーザ名" LOGIN CREATEDB;
LOGIN : 作成したユーザ(ロール)でログイン可能
CREATEDB : データベースの作成が可能

ユーザの作成(デフォルトでCREATE ROLEのオプションLOGINが付与)

CREATE USER "ユーザ名";

ユーザの削除

DROP ROLE "ユーザ名";

存在するユーザの確認(初期設定で存在するユーザまで全て)

SELECT rolname FROM pg_roles;

(ロールのリストを\duで表示しても問題はない)

データベースの作成

CREATE DATABASE "データベース名" OWNER = "ユーザ名" TEMPLATE = template0  ENCODING = 'UTF8' LC_COLLATE = 'C' LC_CTYPE = 'C';

TEMPLATE = : 使用するテンプレートを指定
テンプレートに指定した設定済の照合順序、作成済みのテーブル等の内容が引き継がれる。
他のデータベースの内容を引き継がず、新しいデータベースを作成する場合"template0"

ENCODING = : 使用する文字コードを指定
UTF8を指定

LC_COLLATE : 照合順序の指定

照合順序は、ORDER BY句でのソート順等に影響。'C'の文字ソートはコード順となる。
日本語を考慮した「ja_JP.UTF-8」も指定もできるがパフォーマンスが悪くなる可能性。

LC_CTYPE : データベースで使用する文字の大文字、小文字、数字といった分類の指定

日本語を考慮した「ja_JP.UTF-8」ではLOWER関数で全角の英字も小文字への変換対象として扱われる。

データベースの削除

DROP DATABASE "データベース名"

メモ

権限

スーパーユーザーor特権で (例:データベースの所有者) ログイン
このユーザーは、データベースの作成、削除、ユーザーの追加など全操作を実行可能

postgres=# 

一般ユーザーとしてログイン
限定的な権限のみで、主にデータの参照や更新を行う

postgres=>

"Peer authentication failed" の対処

設定ファイルを開く

cd /etc/postgresql/<version>/main/ (verは14でした)
sudo nano pg_hba.conf

local や host の行で "peer" などの認証メソッドが設定されている場合、これを適切な認証メソッド(例: md5、password)に変更します。

再度読み込み

sudo service postgresql restart

Ubuntuのユーザ名で作った場合は特にパスワード変更をmd5にした後はできないので、peerに戻してログインしてパスワードを設定してからmd5にする

初期設定

OSのアップデート

sudo apt update

Postgres をインストール

sudo apt install postgresql

Postgres の再起動を実行

sudo /etc/init.d/postgresql restart

デフォルトのpostgresユーザでpostgresにログイン

sudo -u postgres -i

postgressでpsql

psql

Ubuntuのユーザに権限を与える

CREATE ROLE "ubuntuユーザ名" LOGIN CREATEDB;

一度終了

\q

psqlでpostgresにログイン

psql -d postgres

Discussion