2

每当我们创建一个表时,我们CREATE TABLE table_name在任何数据库系统中都被指定为。当我们在 postgre 中创建表时,我们使用 CREATE TABLE "tabl_name". " "当我们在 postgreSql 中使用双引号创建表时有什么区别吗?

4

3 回答 3

3

如果您在表名周围使用双引号,那么您使名称区分大小写。默认情况下,未引用的表名称(和一般标识符)不区分大小写。

因此,例如使用以下不带引号的 create 语句: CREATE TABLE TestTable...

表示可以使用以下所有内容来引用该表:TESTTABLE、testtable、TestTTabLe

而如果您在 create 语句中使用引号: CREATE TABLE "TestTable"...

那么只有“TestTable”可以用来引用这个表,其他的都行不通。

该手册包含一个关于这个主题的部分,更详细地解释了它: http ://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

于 2012-08-29T08:33:38.160 回答
1

实际上有一些区别。

双引号告诉解析器包含的是区分大小写的标识符,要按字面意思阅读。

这导致了许多差异。您可以执行以下操作:

CREATE TABLE "table" ( ... );

但不是

CREATE TABLE table (...);

它不仅区分大小写(PostgreSQL 将不带引号的标识符折叠为小写),而且它可以包含其他禁止的关键字。

但是,这意味着之后您必须使用以下内容:

SELECT * FROM "table"

但你不能

SELECT * FROM table
于 2012-08-29T10:38:28.113 回答
0

如果您只使用小写字母(与 SQL 标准相反,它应该是大写字母),则没有区别。

如果您使用任何不带引号的大写字母,它将被转换为小写。

如果您使用带引号的任何大写字母,则它不会被转换,并且您必须一直使用它来访问此表(或列或任何其他标识符)。

最好不要在标识符中使用引号。

于 2012-08-29T08:30:29.403 回答