programming:db:postgresql_command_examples

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
programming:db:postgresql_command_examples [2018-09-03 15:12]
Decomo [プライマリキー制約の変更]
programming:db:postgresql_command_examples [2019-10-24 14:49]
Decomo
行 2: 行 2:
  
 自分用メモ 自分用メモ
 +
 +===== psqlコマンド関連 =====
 +
 +DBに接続
 +<code>
 +psql -U ユーザー名 -d データベース名 -H ホスト名
 +</code>
  
 ===== 列の追加 ===== ===== 列の追加 =====
行 9: 行 16:
 </code> </code>
  
-===== プライマリキー制約の変更 =====+===== キー制約の変更 =====
  
 既存の制約を一旦削除し、新たに制約を設定するという流れで行う。さもないと「multiple primary keys for table "テーブル名" are not allowed」と怒られる。 既存の制約を一旦削除し、新たに制約を設定するという流れで行う。さもないと「multiple primary keys for table "テーブル名" are not allowed」と怒られる。
行 19: 行 26:
 ALTER TABLE テーブル名 ADD PRIMARY KEY (列名, 列名, ...); ALTER TABLE テーブル名 ADD PRIMARY KEY (列名, 列名, ...);
 </code> </code>
 +
 +===== 外部キー制約の変更 =====
 +
 +<code sql>
 +ALTER TABLE テーブル名 DROP CONSTRAINT 制約名;
 +ALTER TABLE テーブル名 ADD FOREIGN KEY (制約をつける列名) REFERENCES 制約の参照先テーブル名(制約の参照先列名);
 +</code>
 +
 +制約の名前を明示しないと「テーブル名_制約をつける列名_fkey」という名前が自動で付けられるっぽい。
 +
 +===== SELECT結果にテーブルにない固定値列を追加する =====
 +
 +SELECTの中に「固定値 as 列名」を入れる。
 +<WRAP group>
 +<WRAP half column>
 +■SQL
 +<code sql>
 +SELECT id,
 +       name,
 +       '日本' AS country
 +FROM users;
 +</code>
 +</WRAP><WRAP half column>
 +■実行結果
 +^  id  ^  name  ^  country  ^
 +|  1|山田太郎|日本|
 +|  2|佐藤花子|日本|
 +|  3|鈴木一郎|日本|
 +</WRAP>
 +</WRAP>
 +合わせ技で固定値にとしてサブクエリの結果を使うこともできる。
 +<WRAP group>
 +<WRAP half column>
 +■SQL
 +<code sql>
 +SELECT id,
 +       name,
 +       (SELECT CAST(c.code AS integer) FROM countries AS c WHERE c.name='日本') AS country_id
 +FROM users;
 +</code>
 +</WRAP><WRAP half column>
 +■実行結果(contriesテーブルでname='日本', code='81'が定義されているとする)
 +^  id  ^  name  ^  country_id  ^
 +|  1|山田太郎|  81|
 +|  2|佐藤花子|  81|
 +|  3|鈴木一郎|  81|
 +</WRAP>
 +</WRAP>
  • programming/db/postgresql_command_examples.txt
  • 最終更新: 2019-10-24 14:49
  • by Decomo