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 |