PostgreSQL命名约定

PostgreSQL naming conventions

我在哪里可以找到有关PostgreSQL命名约定的详细手册? (表名与驼峰案例,序列,主键,约束,索引等......)


关于表名,案例等,普遍的惯例是:

  • SQL关键字:UPPER CASE
  • 名称(标识符):lower_case_with_underscores

例如:

1
UPDATE my_table SET name = 5;

这不是一成不变的,但强烈建议IMO使用小写标识符。 Postgresql在没有引用的情况下对标识符不敏感地处理它(它实际上将它们在内部折叠为小写),并且在引用时区分大小写;很多人都没有意识到这种特质。使用小写字母是安全的。无论如何,使用camelCasePascalCase(或UPPER_CASE)是可以接受的,只要你是一致的:始终或永远引用标识符(这包括模式创建!)。

我不知道更多的会议或风格指南。代理键通常由序列(通常使用serial宏)组成,如果您手动创建它们(tablename_colname_seq),则可以方便地遵循这些序列的命名。

另请参见此处的一些讨论,此处和(对于一般SQL),所有这些都有几个相关的链接。


没有真正的正式手册,因为没有单一的风格或标准。

只要您了解标识符命名规则,您就可以使用您喜欢的任何内容。

在实践中,我发现使用lower_case_underscore_separated_identifiers更容易,因为没有必要在任何地方"Double Quote"来保存大小写,空格等。

如果你想为你的表和函数命名"@MyA??!""betty"" Shard$42"你可以自由地做到这一点,尽管在任何地方打字都很痛苦。

要了解的主要内容是:

  • 除非双引号,否则标识符大小写折叠为小写,因此MyTableMyTableMyTable都是相同的,但"MYTABLE""MYTABLE"是不同的;

  • 除非双引号:

    SQL identifiers and key words must begin with a letter (a-z, but also letters with diacritical marks and non-Latin letters) or an underscore (_). Subsequent characters in an identifier or key word can be letters, underscores, digits (0-9), or dollar signs ($).

  • 如果要将关键字用作标识符,则必须双引号。

在实践中,我强烈建议您不要使用关键字作为标识符。至少避免保留字。仅仅因为你可以命名一个表"with"并不意味着你应该。