====== 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|