【发布时间】:2021-11-03 19:14:00
【问题描述】:
我不太喜欢 PostgreSQL 和 pgAdmin 4,我有以下疑问。
以下是我在 pgAdmin4 中看到的截图:
如您所见,它正在执行这个非常简单的查询:
SELECT * FROM public."Example"
ORDER BY id ASC
我不明白的是,Example 表名前面的 public 名称是什么。这是什么?
我试图以这种方式执行查询,但它不起作用:
SELECT * FROM Example
ORDER BY id ASC
它给了我一个语法错误。我经常使用 MySql,在 MySql 中它正在工作。
我尝试用这种方式替换查询:
SELECT * FROM "Example"
ORDER BY id ASC
所以它正在工作。所以这意味着在PosgreSQL数据库中,表名周围的“”是强制性的?
【问题讨论】:
-
public是表所在的模式。模式限定表名是一个好习惯,因为不同模式中可以有同名的表。有关更多信息,请参阅search_path。至于双引号,请参阅文档中的Identifiers,它将解释一切。短版,如果不想双引号,请使用所有小写名称。 -
public是架构名称。 -
听起来你不小心用大写的名字定义了
example表 -
如果您使用小写标识符(表、函数、视图等名称),工作量会减少。如果工作越少越好,那么是的,那就更好了。
标签: postgresql quoted-identifier