为什么查询中无法识别表名或者列名?
答:在定义表时,如果标识符加上引号,表示标识符是大小写敏感的,数据库存储标识符时不改变大小写。如果标识符不加引号,表示标识符是大小写不敏感的,并且数据库将标识符转换为全小写形式存储。在访问表时,如果使用的标识符加上引号,则直接与数据库中的标识符进行匹配;如果标识符不加引号,则会将标识符转换为全小写后再与数据库中的标识符进行匹配。建议创建时统一使用小写。
示例如下:
--创建表。 gaussdb=# CREATE TABLE "TB_test" ("Tid" int, num int); --查询表时不加双引号,默认都为小写,会报错。 gaussdb=# SELECT * FROM TB_test; ERROR: relation "tb_test" does not exist LINE 1: SELECT * FROM TB_test; gaussdb=# SELECT Tid FROM "TB_test"; ERROR: Column "tid" does not exist LINE 1: SELECT Tid FROM "TB_test" --查询时加双引号。 gaussdb=# SELECT "Tid" FROM "TB_test"; Tid ----- (0 rows) --删除表。 gaussdb=# DROP TABLE "TB_test";