Postgresql中的基本SQL选择失败

Postgresql中的基本SQL选择失败,sql,postgresql,Sql,Postgresql,我正在postgresql表上执行select*,一切看起来都很好。但如果我这样做: SELECT Name from People 它说: ERROR: column People.Name does not exist SQL state: 42703 Character: 8 但“名称”列将在选择*期间显示。我试过: SELECT People.Name from People 同样,结果也是一样的。我错过什么了吗?在任何其他数据库中都应该很容易做到这一点。尝试在列名周围加上引号,即

我正在postgresql表上执行select*,一切看起来都很好。但如果我这样做:

SELECT Name from People
它说:

ERROR: column People.Name does not exist
SQL state: 42703
Character: 8
但“名称”列将在选择*期间显示。我试过:

SELECT People.Name from People

同样,结果也是一样的。我错过什么了吗?在任何其他数据库中都应该很容易做到这一点。

尝试在列名周围加上引号,即“name”

name
是一个关键字,因此在这种情况下可能无法很好地处理它。最好的做法是将表别名如下:

SELECT "Att1" FROM people
从人物中选择姓名
p

然后使用
p
选择列:


选择
p.Name
来自People p

PostgreSQL将所有内容转换为小写

如果您要求这样做:

CREATE TABLE People
{
id SERIAL,
Att1 varchar(100)
-- constraints
};

SELECT Name FROM People;
您应该获得所有信息,因为pgsql将其转换为

CREATE TABLE people
{
id SERIAL,
att1 varchar(100),
-- constraints
};

SELECT name FROM people;
如果使用pgAdmin构建表并使用混合大小写创建字段,则需要引用它们才能成功,如下所示:

SELECT "Att1" FROM people

抱歉,我使用了Name作为示例,我的真实字段不是keyname。我怀疑这是一个大小写问题,但我使用了GUI.Workes中显示的相同大小写,但我不明白为什么不能只使用不带引号的常规名称。可能是因为名称是保留字。还有George解释的原因(小写)。