PostgreSQL命名约定

boj*_*boj 172 postgresql naming-conventions

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

leo*_*loy 222

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

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

例如:

UPDATE my_table SET name = 5;
Run Code Online (Sandbox Code Playgroud)

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

我不知道更多的会议或风格指南.代理键通常由一个序列(通常是serial宏)组成,如果你手工创建它们,那么坚持那些序列的命名会很方便(tablename_colname_seq).

也看到一些讨论,在这里,这里和(一般SQL)在这里,所有的几个相关链接.

  • 我讨厌大写的关键字,只讨厌它,约会或不.关键字没有案例依赖性.我更喜欢小写.是的,我知道这只是一种偏好,但这也只是一个评论.;-) (10认同)
  • @leonbloy,如果你在创建表时没有引用,那么Postgres会小写你的表名和字段名.您可以在编写查询时使用驼峰大小写,但结果将显示全部小写,当字段由多个单词组成时(lastupdateddate),这很难读取.如果你想让你的列名在查询结果中可读,你必须引用所有内容或使用蛇案,IMO很难看.如果Postgres单独留下您的名字并且不要求您提供报价,那会好得多. (4认同)
  • FWIW,唯一的特质是Pg折叠为小写,SQL标准说它应该折叠成大写.无法折叠的DBMS是非标准的非标准DBMS. (3认同)
  • 作为Postgres的新用户,这非常令人沮丧.不得不一直选择输入引号或使用丑陋的命名约定.它糟透了. (3认同)
  • @ user1334007 惯例并不难看 - 并阅读上面 Craig 的评论。如果您在创建表时没有引用(也就是说,如果您是一致的),则无需引用。 (2认同)
  • 这是 SQL 标准。http://stackoverflow.com/questions/153944/is-sql-syntax-case-sensitive (2认同)

Cra*_*ger 24

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

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

在实践中,我觉得它更容易使用,lower_case_underscore_separated_identifiers因为它无需"Double Quote"到处保存大小写,空格等.

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

要了解的主要内容是:

  • 除非双引号,标识符大小写折叠为小写,所以MyTable,MYTABLE并且mytable都是相同的,但是"MYTABLE"并且"MyTable"是不同的;

  • 除非双引号:

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

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

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

  • “我发现使用`lower_case_underscore_separated_identifiers`更容易”......最近,我听到这被描述为“蛇形案例” (3认同)