在 PostgreSQL 上执行查询时,是否必须在 table 名称周围使用“”?

Is it mandatory to use "" around the table name performing query on PostgreSQL?

我不太喜欢 PostgreSQLpgAdmin 4,我有以下疑问。

下面是我在 pgAdmin4 中看到的截图:

如您所见,它正在执行这个非常简单的查询:

SELECT * FROM public."Example"
ORDER BY id ASC 

我不明白的是 public 这个 Example 前面的名字是什么 table 名字。这是什么?

我试图以这种方式执行查询,但它不起作用:

SELECT * FROM Example
ORDER BY id ASC 

它给我一个语法错误。我经常使用 MySql 并且在 MySql 中它正在工作。

我尝试用这种方式替换查询:

SELECT * FROM "Example"
ORDER BY id ASC 

所以它正在工作。所以这意味着在 PosgreSQL 数据库中 table 名称周围的“”是强制性的?

The thing that I am not understanding is what is this public name in front of the Example table name. What is it?

As said in postgres documentation: “默认情况下 table(和其他对象)会自动放入名为“public”的模式中。每个新数据库都包含这样的模式。”

So it means that in PosgreSQL database the "" around the table name are mandatory?

不一定,但如果您使用保留关键字(例如“user”、“name”等)或者如果您的 table 的名称包含大写字母(这是您的情况),则需要使用它字母。无论如何,在这种情况下,如果可以,最好更改 table 的名称。

您应该将您的 table 名称更改为所有字母小写,然后再试一次

select * from example