PostgreSQL 命名规范

8 浏览
0 Comments

PostgreSQL 命名规范

我在哪里可以找到关于PostgreSQL命名约定的详细手册?(表名 vs. 驼峰式命名、序列、主键、限制、索引等)

admin 更改状态以发布 2023年5月20日
0
0 Comments

因为没有单一的风格或标准,所以并没有一个正式的手册。

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

实际上,我发现使用lower_case_underscore_separated_identifiers更容易,因为不需要在每个地方都用"Double Quote"来保留大小写,空格等。

如果您想给您的表和函数命名"@MyAṕṕ! ""betty"" Shard$42"您可以自由选择,但是要在任何地方键入这个名称会很痛苦。

要了解的主要事项是:

  • 除非使用双引号,否则标识符将转换为小写,因此MyTableMYTABLEmytable都是相同的,但"MYTABLE""MyTable"是不同的。

  • 除非使用双引号:

    SQL标识符和关键字必须以字母(a-z,但也可以是带有变音符号和非拉丁文字的字母)或下划线(_)开头。标识符或关键字中的后续字符可以是字母、下划线、数字(0-9)或美元符号($)。

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

实际上,我强烈建议您不要将关键字用作标识符。至少避免使用保留字。仅仅因为您可以将表命名为"with"并不意味着您应该这样做。

0
0 Comments

关于表名、大小写等方面的惯例如下:

  • SQL关键字: 大写字母
  • 标识符(数据库、表、列等的名称): 带下划线的小写

例如:

UPDATE my_table SET name = 5;

这并不是铁规,但是对于标识符使用小写是非常推荐的,我认为是这样的。当未被引用时(PostgreSQL在内部实际上将它们折叠为小写),PostgreSQL在不区分大小写的情况下处理标识符;当被引用时,它在区分大小写。让它始终小写是安全的。无论如何,使用camelCasePascalCase(或UPPER_CASE)是可以接受的,只要你保持一致:要么总是引用标识符,要么从不引用(包括模式创建!)。

我不了解更多的惯例或样式指南。通常,代理键是从序列中生成的(通常是使用serial宏),如果您手动创建它们,那么将这个命名规则用于那些序列会很方便(tablename_colname_seq)。

在这里还可以看到一些讨论:这里这里,以及(针对一般SQL) 这里,都有几个相关链接。

注意: PostgreSQL 10引入了identity 列作为序列的SQL兼容替代。

0