在哪里可以找到有关PostgreSQL命名约定的详细手册?(表名与camel大小写、序列、主键、约束、索引等)

推荐答案

关于表名、大小写等,普遍的惯例是:

  • SQL关键字:UPPER CASE
  • 标识符(数据库、表、列等的名称):lower_case_with_underscores

For example:

UPDATE my_table SET name = 5;

这不是一成不变的,但我强烈建议使用identifiers in lower case位.Postgresql在不引用时不区分大小写(它实际上在内部将它们折叠为小写),在引用时区分大小写;许多人没有意识到这种trait .使用总是小写的你是安全的.无论如何,可以使用camelCasePascalCase(或UPPER_CASE),只要是一致的:要么总是引用标识符,要么从不引用标识符(这包括模式创建!).

我不知道还有更多的惯例或风格指南.代理键通常是由一个序列(通常是serial宏)生成的,如果手动创建这些序列(tablename_colname_seq),就可以很方便地坚持这些序列的命名.

另请参见一些讨论herehere和(对于通用SQL)here,它们都有几个相关链接.

注:Postgresql 10引入了identity列,作为serial的SQL兼容替代.

Postgresql相关问答推荐

更新带有视图的表并在关系员工的规则中检测到无限的回归"

Postgres:如何优化在多个表上搜索列的相似性查询?(Pg_Trgm)

列索引8上的扫描错误,名称已复制:不支持扫描,正在存储驱动程序.值类型[]uint8到类型*[]*bool

无法继承BYPASSRLS

在Axum 0.5中,如何在一个请求处理程序中同时使用数据库和路径解析?

有没有一种方法可以在参数中添加密码,并在批处理文件中需要时自动获取密码?

带有附加组的时间刻度 interpolated_average

如何在plpgsql中找到一行中的最大值?

TimescaleDB 连续聚合:如何存储连续聚合结果

如何包装 record_out() 函数?

从 Postgres 字段中的多个值中进行 Select

postgreSQL 中对 utf-8 的 LC_COLLATE 和 LC_CTYPE 支持

如何向文本字段添加长度约束

PostgreSQL INSERT 插入一个枚举数组

返回 NULL 的空数组的 array_length()

使用 current_setting() 判断值

Django 1.9.2 AssertionError:database connection isn't set to UTC

PostgreSQL:将结果数据从 SQL 查询导出到 Excel/CSV

如何使用 WITH RECURSIVE 子句进行 Select

全文的 Postgresql 前缀通配符