PostgreSQLのVALUEリストがありがたいです。
VALUEリストの使用例
select * from ( values (1, '大嶋', 'oshima'), (2, '中嶋', 'nakajima'), (3, '小嶋', 'kojima') ) as t( lno, name, roma );
-- Oracleに慣れ親しんだ私などは以下のような
-- SQLをイメージしますが PostgreSQLのVALUESリストは 美しいです。
-- oracleだとfrom dualが必要になるのでさらにゴチャゴチャします
--
myposdb=# select 1 as lno,'大嶋' as name,'oshima' as roma
myposdb-# union all select 2 as lno,'中嶋' as name,'nakajima' as roma
myposdb-# union all select 3 as lno,'小嶋' as name,'kojima' as roma
myposdb-# ;
 lno | name |   roma
-----+------+----------
   1 | 大嶋 | oshima
   2 | 中嶋 | nakajima
   3 | 小嶋 | kojima
(3 行)
myposdb=# select * from (
myposdb(#  values
myposdb(#  (1, '大嶋', 'oshima'),
myposdb(#  (2, '中嶋', 'nakajima'),
myposdb(#  (3, '小嶋', 'kojima')
myposdb(# ) as t(
myposdb(#    lno,  name, roma
myposdb(# );
 lno | name |   roma
-----+------+----------
   1 | 大嶋 | oshima
   2 | 中嶋 | nakajima
   3 | 小嶋 | kojima
(3 行)
myposdb=#
insert into values で一度に複数レコードinsertできる
この構文はPostgreSQLだけでなくMySQLでも有効です。残念ですがOracleでは使えません。Oracleではinsert allを使ってこれに代わる事を実現するのですが、こちらの構文のほうが便利です。Oracleを少しフォローするとinsert allの場合、同時に複数テーブルに対するINSERTも可能になっています。
insert values 句
insert into wardcity(prefectures,ward) values 
    ('千葉県','千葉市中央区')
  , ('千葉県','千葉市稲毛区')
  , ('千葉県','千葉市緑区');
実行例
-- 検証用テーブル作成
myposdb=# create table wardcity
myposdb-# (
myposdb(#     rid         serial,
myposdb(#     prefectures varchar(10),
myposdb(#     ward        varchar(40)
myposdb(# );
CREATE TABLE
-- insert values句
myposdb=# insert into wardcity(prefectures,ward) values
myposdb-#     ('千葉県','千葉市中央区')
myposdb-#   , ('千葉県','千葉市稲毛区')
myposdb-#   , ('千葉県','千葉市緑区');
INSERT 0 3
-- insert データ確認
myposdb=# select * from wardcity;
 rid | prefectures |     ward
-----+-------------+--------------
   1 | 千葉県      | 千葉市中央区
   2 | 千葉県      | 千葉市稲毛区
   3 | 千葉県      | 千葉市緑区
(3 rows)
      
  
  
  
  