Postgresqlのテーブル名が大文字だとややこしい件
Postgresqlの大文字/小文字の扱いについて。
CREATE TABLE FOO (ID INT);
と
CREATE TABLE foo (ID INT);
は、同じテーブル『foo』を作成する。
そして、
CREATE TABLE "FOO" (ID INT);
と、
CREATE TABLE "Foo" (ID INT);
は、それぞれ、
テーブル『FOO』と、『Foo』を作成する。
つまり、ダブルクォーテーション(")で囲った部分は大文字/小文字が区別され、
囲わない部分は、小文字として認識される。
上記の3テーブルをそれぞれSELECTしたとき、
SELECT * FROM FOO;
SELECT * FROM "FOO";
SELECT * FROM "Foo";
はそれぞれ明確に異なる。
ちなみに、PostgresqlのpgAdminでテーブルを作成するとき、
テーブル名を大文字にすると、上記のダブルクォーテーションで
囲ったときと同じ処理になる。
pgAdminを使っているときは要注意。