访问关联表postgresql

时间:2016-05-09 14:37:11

标签: sql postgresql psql

我正在开发一个使用postgresql数据库的现有项目。这是我第一次使用postgresql。

我有一个完全阻止我的主要问题。

在数据库创建脚本中,我有以下几行:

CREATE TABLE "TA_cat_group" (
  cat character varying NOT NULL,
  group character varying NOT NULL
);

当我使用终端并将自己连接到psql时,我可以通过\d来描述我的数据库:

 List of relations
 Schema |          Name           |   Type   | Owner  
--------+-------------------------+----------+--------
 public | TA_cat_group            | table    | vit
 public | cat                     | table    | vit
 ...

然后我可以\d cat来访问猫表的描述。

但是,如果我\d TA_cat_group,则会显示以下行:

 Did not find any relation named "TA_cat_group".

由于这个问题,我无法在这张桌子上做出请求......这可能是什么原因?

PS:之前我做了\c vit,所以我在正确的数据库下连接,这似乎不是我的问题的原因。此外,这个架构应该是公开的......

1 个答案:

答案 0 :(得分:2)

由于双引号,您的表名现在为敏感"TA_cat_group"TA_cat_group的名称不同。

您需要使用

\d "TA_cat_group"

但我建议永远在SQL语句中使用双引号,以避免必须处理区分大小写的名称。

手册中的更多细节:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

不相关,但是:您不能将group用作列名而不将其括在双引号中,因为它是保留关键字。您问题中的示例create table将导致:

  

错误:“group”或附近的语法错误

避免该错误的唯一方法是使用"group"而不是group - 但是这会使用那些可怕的双引号。