PostgreSQL 命名规范
因为没有单一的风格或标准,所以并没有一个正式的手册。
只要您了解标识符命名规则,您就可以使用任何你喜欢的方式。
实际上,我发现使用lower_case_underscore_separated_identifiers
更容易,因为不需要在每个地方都用"Double Quote"
来保留大小写,空格等。
如果您想给您的表和函数命名"@MyAṕṕ! ""betty"" Shard$42"
您可以自由选择,但是要在任何地方键入这个名称会很痛苦。
要了解的主要事项是:
-
除非使用双引号,否则标识符将转换为小写,因此
MyTable
,MYTABLE
和mytable
都是相同的,但"MYTABLE"
和"MyTable"
是不同的。 -
除非使用双引号:
SQL标识符和关键字必须以字母(a-z,但也可以是带有变音符号和非拉丁文字的字母)或下划线(_)开头。标识符或关键字中的后续字符可以是字母、下划线、数字(0-9)或美元符号($)。
-
如果想将关键字用作标识符,则必须使用双引号。
实际上,我强烈建议您不要将关键字用作标识符。至少避免使用保留字。仅仅因为您可以将表命名为"with"
并不意味着您应该这样做。
关于表名、大小写等方面的惯例如下:
- SQL关键字:
大写字母
- 标识符(数据库、表、列等的名称):
带下划线的小写
例如:
UPDATE my_table SET name = 5;
这并不是铁规,但是对于标识符使用小写是非常推荐的,我认为是这样的。当未被引用时(PostgreSQL在内部实际上将它们折叠为小写),PostgreSQL在不区分大小写的情况下处理标识符;当被引用时,它在区分大小写。让它始终小写是安全的。无论如何,使用camelCase
或PascalCase
(或UPPER_CASE
)是可以接受的,只要你保持一致:要么总是引用标识符,要么从不引用(包括模式创建!)。
我不了解更多的惯例或样式指南。通常,代理键是从序列中生成的(通常是使用serial
宏),如果您手动创建它们,那么将这个命名规则用于那些序列会很方便(tablename_colname_seq
)。
在这里还可以看到一些讨论:这里,这里,以及(针对一般SQL) 这里,都有几个相关链接。
注意: PostgreSQL 10引入了identity
列作为序列的SQL兼容替代。