PostgreSQL

PostgreSQLメモ

PostgreSQLで使ってて気付いたこととかをメモるところ

随時更新するよ.

LIKEによるテーブル定義の流用

  • 名前の意味
    • tblname: 作成するテーブル名
    • parent: DDLを流用する元テーブル名
    • tblname: データをつっこむテーブル名
    • pkeycol: PRIMARY KEYに指定したカラム名(複数カラムに指定した場合は,多分,それら全部要る)
  • やりかた

    CREATE TABLE tblname (LIKE parent);
    
  • 注意

    • 上の文ではPRIMARY KEYとかコメントとかついてこないので,振り直さないとだめ.
    • DEFAULT値とかはLIKE句の後ろにdefaultとかつけたらコピーできる.
    • 詳しくはCREATE TABLEとか参照.
  • おまけ

    • PRIMARY KEYを指定する場合

      ALTER TABLE tblname ADD PRIMARY KEY (pkeycol);
      
    • コメントをつける場合は

      COMMENT ON TABLE  tblname IS '←というテーブルを作ったそうな';
      COMMENT ON COLUMN tblname.pkeycol IS '←これPRIMARY KEYだから';
      

なければINSERT,重複する場合はUPDATE

  • 名前の意味
    • tblname: データをつっこむテーブル名
    • pkeycol: PRIMARY KEYに指定したカラム名(複数カラムに指定した場合は,多分,それら全部要る)
    • colname: データを入れたいカラム名
    • pkeyval: pkeycolのカラムに入れる値
    • value: colnameのカラムに入れる値
  • やりかた

    INSERT INTO tblname (pkeycol,colname) VALUES (pkeyval,value)
    ON CONFLICT ON CONSTRAINT pkeyname
    DO UPDATE SET colname = value;
    
  • 注意

    • CONSTRAINTで指定するPRIMARY KEYが必要.そらそーだ.
  • おまけ