====== PostgreSQLコマンド例集 ======
自分用メモ
===== psqlコマンド関連 =====
DBに接続
psql -U ユーザー名 -d データベース名 -H ホスト名
===== 列の追加 =====
ALTER TABLE テーブル名 ADD COLUMN 列名 型 DEFAULT 黙認値;
===== 主キー制約の変更 =====
既存の制約を一旦削除し、新たに制約を設定するという流れで行う。さもないと「multiple primary keys for table "テーブル名" are not allowed」と怒られる。
なお、制約名はテーブル名に「_pkey」を追加したものである。
ALTER TABLE テーブル名 DROP CONSTRAINT テーブル名_pkey;
ALTER TABLE テーブル名 ADD PRIMARY KEY (列名, 列名, ...);
===== 外部キー制約の変更 =====
ALTER TABLE テーブル名 DROP CONSTRAINT 制約名;
ALTER TABLE テーブル名 ADD FOREIGN KEY (制約をつける列名) REFERENCES 制約の参照先テーブル名(制約の参照先列名);
制約の名前を明示しないと「テーブル名_制約をつける列名_fkey」という名前が自動で付けられるっぽい。
===== SELECT結果にテーブルにない固定値列を追加する =====
SELECTの中に「固定値 as 列名」を入れる。
■SQL
SELECT id,
name,
'日本' AS country
FROM users;
■実行結果
^ id ^ name ^ country ^
| 1|山田太郎|日本|
| 2|佐藤花子|日本|
| 3|鈴木一郎|日本|
合わせ技で固定値にとしてサブクエリの結果を使うこともできる。
■SQL
SELECT id,
name,
(SELECT CAST(c.code AS integer) FROM countries AS c WHERE c.name='日本') AS country_id
FROM users;
■実行結果(contriesテーブルでname='日本', code='81'が定義されているとする)
^ id ^ name ^ country_id ^
| 1|山田太郎| 81|
| 2|佐藤花子| 81|
| 3|鈴木一郎| 81|