PUROGU LADESU

ポエムがメインのブログです。

postgresqlメモ

PostgreSQLの使い方 JavaDrive
https://www.javadrive.jp/postgresql/

PostgreSQL日本語ドキュメント
https://www.postgresql.jp/document/

PostgreSQL】データ型一覧
https://plus-info-tech.com/postgresql-typelist


# 文字列や数値の値の入力方法
https://www.javadrive.jp/postgresql/basic/index1.html

エスケープ文字を使う場合はeかEをつける

e'abc\ndef' → 改行がはいる
'abc\ndef' → ただの文字列
'を入れる場合は''にする → isn''t

# データ型
https://www.javadrive.jp/postgresql/type/

数値 integer(int), bigint, numeric(or decimal), real, double
連番 serial, bigserial (手動で指定できるが使用済みとして考慮されないので)
文字列 varchar(255)可変長, char(8)固定長なので空白で埋める, text(無制限)
日付 timestamp, date, time ''で囲む '2024-4-20 10:23:54'
論理値 bool TRUE/FALSEのほか、 true, 't', 'yes', 'y', 'on', 1 が使える
その他 money, bytea, enum, point, cidr, xml, json, integer, text


# スキーマ
https://www.javadrive.jp/postgresql/schema/index1.html

データベースの中にスキーマを作って、テーブルなどのオブジェクトをグループ化出来る
postgres, template0はもともと存在しているデータベース
publicはもともとあるスキーマ。どのロールでも(誰でも)テーブル作成できる。

# ロール
https://www.javadrive.jp/postgresql/role/

ユーザーやグループ。パスワードを設定する。
何が出来るか権限を設定できる。
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name To role_name;
GRANT SELECT, INSERT ON table_name To role_name;
グループ(ロールをロールに所属させる)
grant admin to kuma with admin option;


# テーブル
https://www.javadrive.jp/postgresql/table/

カラムに対して
id serial PRIMARY KEY
id serial UNIQUE
code integer REFERENCES some_table (code) on delete cascade
price integer CHECK (price > 0)

テーブルに対して
PRIMARY KEY (id, branch)
UNIQUE (id, branch)
FOREIGN KEY (code) REFERENCES some_table (code) on delete cascade
CHECK (price > 0)

# 一時テーブル
https://www.javadrive.jp/postgresql/table/index12.html

# 継承
https://www.javadrive.jp/postgresql/table/index13.html

# 変更
https://www.javadrive.jp/postgresql/table/index16.html

ALTER TABLE sample_tbl ADD COLUMN address varchar(10);
ALTER TABLE sample_tbl ALTER address SET DEFAULT '';
ALTER TABLE sample_tbl ALTER create_date SET NOT NULL;
ALTER TABLE sample_tbl ALTER address TYPE text;

ALTER TABLE sample_tbl ADD PRIMARY KEY (u_id);
ALTER TABLE sample_tbl ADD CONSTRAINT pk_sample_tbl PRIMARY KEY (u_id); notnulは勝手につく
ALTER TABLE sample_tbl DROP CONSTRAINT xxx

IDENTITY 自動で値を入れてくれる(serial, AUTO_INCREMENT みたいなもの)
(id int PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, data text)

## インデックス
https://www.javadrive.jp/postgresql/index/index1.html
CREATE INDEX ON sample_tbl (address);