読者です 読者をやめる 読者になる 読者になる

文系seの備忘録

Excelの改行でひたすらスペースを打っていた機械音痴の文系seが日々の備忘録を綴る。

postgreSQL コマンドまとめ

PostgreSQL

postgreSQL コマンドまとめ




<DB定義の変更系>


・型変更
ALTER TABLE <テーブル名> ALTER COLUMN <カラム名> TYPE <データ型>;

・テーブル名変更
ALTER TABLE <変更前テーブル名> RENAME TO <変更後テーブル名>;

・カラム追加
ALTER TABLE <テーブル名> ADD <カラム名> <型情報>;
ex. ALTER TABLE sample_table ADD user_name varchar(255);
ALTER TABLE sample_table ADD address varchar(1023) NOT NULL;
※ 特定のカラムのあとに追加したい場合
alter table <テーブル名> add column <カラム名> after <前のカラム名>;

カラム名変更
ALTER TABLE <テーブル名> RENAME <古いカラム名> TO <新しいカラム名>;
ex. ALTER TABLE sample_table RENAME name TO user_name;]

・カラム削除
ALTER TABLE <テーブル名> DROP COLUMN <カラム名>;

・NOT NULL制約の追加
ALTER TABLE <テーブル名> ALTER COLUMN <カラム名> SET NOT NULL;

・NOT NULL制約の削除
ALTER TABLE <テーブル名> ALTER COLUMN <カラム名> DROP NOT NULL;

・カラムのデフォルト値変更
ALTER TABLE <テーブル名> ALTER COLUMN <カラム名> SET DEFAULT false;

・テーブルの中身を空にする
truncate table <テーブル名>;

・テーブルをDBから削除する
DROP TABLE <テーブル名>;

・DBから全てのテーブルを削除する
drop schema <スキーマ名> cascade;
create schema <スキーマ名>;
※ 全てのテーブルが同じスキーマにあることを前提として、スキーマごとdrop&再作成する操作。


<データの追加・更新・削除>

・データの挿入
insert into <テーブル名> values ('000001', '1971-07-13');

・データの更新
UPDATE <テーブル名> SET <カラム名> = '新しい値' WHERE <カラム名> = '前の値';

・データの削除
DELETE FROM <テーブル名> WHERE price = 10;
ex. sample_tableから'東京'以外を削除する
DELETE FROM sample_table WHERE kind <> '東京';



<確認・集計系>

・テーブル一覧
方法1: select * from <テーブル名>;
方法2: \d (psqlから実行)

・レコード数取得
SELECT COUNT(*) FROM <テーブル名>;

・ 重複を除いてレコード数取得
SELECT COUNT(DISTINCT <カラム名>) FROM <テーブル名>;

・グループごとに集計
select <カラム名>, count(*) from <テーブル名> group by <カラム名>;
ex. 男女別の回答件数を集計
select male_and_female, count(*) from sample_table group by male_and_female;

・ソート
SELECT * FROM <テーブル名> ORDER BY <カラム名> ASC;
ex.SELECT * FROM sample_table ORDER BY user_name ASC, user_id DESC;
※ ASC:昇順、DESC:降順



<psglコマンド>

psglコマンドとは?
PostgreSQL付属のツールで、DBの管理やSQL文の実行ができる"\"から始まるコマンド。

SQL文のヘルプ
\h SQLコマンド名
ex. 「\h select」でselect文の構文が表示される

・指定したファイル内のsqlを実行
\i ファイル名
一度に大量のsqlを実行したい場合にはこちらのほうが便利

・psglを終了する
\q

・DBの切り替え
\c DB名




【参考】
PostgreSQL 9.5.2文書
https://www.postgresql.jp/document/9.5/html/index.html
・データをグループ化して合計や平均を計算
http://www.dbonline.jp/sqlite/select/index14.html