PostgreSQL和pgadmin3.exe

PostgreSQL和pgadmin3.exe,postgresql,window,Postgresql,Window,我试图开始玩postgres,发现了一件非常奇怪的事情,我使用pgadminIII创建了一个名为testtable的表,并添加了两列,然后在查询编辑器中编写了以下查询 SELECT * from testtable; 它的响应是没有找到具有这样名称的表,然后我尝试了 select * from "testtable" 使用引号(后来的一个)它工作了,然后我删除了表并使用脚本编辑器创建了表,使用相同的名称确保名称周围没有引号,然后两个查询都开始工作,我无法理解这到底是什么意思,即使我写了“te

我试图开始玩postgres,发现了一件非常奇怪的事情,我使用pgadminIII创建了一个名为testtable的表,并添加了两列,然后在查询编辑器中编写了以下查询

SELECT * from testtable;
它的响应是没有找到具有这样名称的表,然后我尝试了

select * from "testtable"
使用引号(后来的一个)它工作了,然后我删除了表并使用脚本编辑器创建了表,使用相同的名称确保名称周围没有引号,然后两个查询都开始工作,我无法理解这到底是什么意思,即使我写了“teablename”在CREATETABLE语句中,引号不应成为表名的一部分

另外,在使用pgAdmin图形用户界面时,我如何确保所有对象都是在没有引号的情况下创建的(当然,如果上述问题是由引号引起的)

更新:环境信息


OS=>WindowsServer2008x64,Postgres=>9.0.3-2x64,pgAdmin=>> 版本1.12.2(2011年3月22日,修订版:> REL-1_12_2)


您第一次使用“新建表格”对话框了吗?您不应该在对话框中使用引号,因为pgAdmin将插入所有必要的引号

编辑 我今天发现了一件有点奇怪的事情,也许可以解释你发生了什么

如果不引用表名,表名将转换为小写。所以如果你这样做了

CREATE TABLE TestTable ( ... );
您的表将被称为testtable 开始查询表时会发生以下情况:

SELECT * FROM TestTable; -- succeeds looks for testtable
SELECT * FROM testtable; -- succeeds
SELECT * FROM "TestTable"; -- fails because case doesn't match
现在如果你已经做到了:

CREATE TABLE "TestTable" ( ... );
您的表实际上将被称为TestTable,保留大小写,结果是

SELECT * FROM TestTable; -- fails looks for testtable
SELECT * FROM testtable; -- fails
SELECT * FROM "TestTable"; -- succeeds

您第一次使用“新建表格”对话框了吗?您不应该在对话框中使用引号,因为pgAdmin将插入所有必要的引号

编辑 我今天发现了一件有点奇怪的事情,也许可以解释你发生了什么

如果不引用表名,表名将转换为小写。所以如果你这样做了

CREATE TABLE TestTable ( ... );
您的表将被称为testtable 开始查询表时会发生以下情况:

SELECT * FROM TestTable; -- succeeds looks for testtable
SELECT * FROM testtable; -- succeeds
SELECT * FROM "TestTable"; -- fails because case doesn't match
现在如果你已经做到了:

CREATE TABLE "TestTable" ( ... );
您的表实际上将被称为TestTable,保留大小写,结果是

SELECT * FROM TestTable; -- fails looks for testtable
SELECT * FROM testtable; -- fails
SELECT * FROM "TestTable"; -- succeeds

您使用的是什么版本的pgadmin,您使用的是什么操作系统?您还可以包括您的create table语句吗?OS=>Windows Server 2008 x64,Postgres=>9.0.3-2 x64,pgAdmin=>1.12.2版(2011年3月22日,版本:REL-1_12_2)您使用的是什么版本的pgAdmin,您使用的是什么操作系统?您还可以包括您的create table语句吗?OS=>Windows Server 2008 x64,Postgres=>9.0.3-2 x64,pgAdmin=>1.12.2版(2011年3月22日,版本:REL-1_12_2)我没有在对话中添加引号。我没有在对话中添加引号。