PostgreSQL INSERT INTO 文

PostgreSQL INSERT INTO 文は、テーブルに新しいレコードを挿入するために使用されます。

1行を挿入することも、複数行を同時に挿入することもできます。

構文

INSERT INTO 文の構文は以下のとおりです。

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
  • column1, column2,...columnN はテーブルの列名です。

  • value1, value2, value3,...valueN は列に対応する値です。

INSERT INTO 文を使用するとき、列の数はデータ値の数と同じで、順序も対応する必要があります。

テーブルのすべての列に値を挿入する場合、列を指定する必要はなく、挿入する値を指定するだけで済みます。

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

次の表は、挿入を実行した後に返される結果の説明です。

番号 出力情報 & 説明
1

INSERT oid 1

1行のみ挿入し、対象テーブルにOIDがある場合の戻り情報です。oidは挿入された行に割り当てられたOIDです。

2

INSERT 0 #

複数行を挿入したときに返される情報です。# は挿入された行数です。

例

サンプルdb データベースに COMPANY テーブルを作成します:

サンプルdb=# CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL,
   JOIN_DATE      DATE
);

COMPANY テーブルに次のデータを挿入します:

サンプルdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');
INSERT 0 1

次のINSERT文は SALARY 列を無視します:

サンプルdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,JOIN_DATE) VALUES (2, 'Allen', 25, 'Texas', '2007-12-13');
INSERT 0 1

次のINSERT文は、JOIN_DATE 列に値を指定する代わりに、DEFAULT 句を使用してデフォルト値を設定します:

サンプルdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (3, 'Teddy', 23, 'Norway', 20000.00, DEFAULT );
INSERT 0 1

次の例では複数行を挿入します:

サンプルdb=# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00, '2007-12-13' ), (5, 'David', 27, 'Texas', 85000.00, '2007-12-13');
INSERT 0 2

SELECT 文を使用してテーブルのデータを問い合わせます:

サンプルdb=# SELECT * FROM company;

ID        NAME        AGE        ADDRESS     SALARY   JOIN_DATE
----      ----------  -----      ----------  -------      --------
1         Paul        32         California  20000.0      2001-07-13
2         Allen       25         Texas                    2007-12-13
3         Teddy       23         Norway      20000.0
4         Mark        25         Rich-Mond   65000.0      2007-12-13
5         David       27         Texas       85000.0      2007-12-13
その他の拡張