为什么表名或列名不能以数字开头?
在 PostgreSQL 中创建对象(例如表或列)时,有必要给他们起名字。这些名称必须满足一定的条件,包括不能以数字字符开头的限制。
限制原因
此约定源于原始 SQL 标准,它指定标识符(包括对象名称)必须以字母或下划线开头。此设计决策主要是为了简化解析。
解析挑战
如果允许使用数字字符作为标识符开头,则会在 SQL 语法中产生歧义。例如,在以下 SELECT-list 子句中:
SELECT 2e2 + 3.4 FROM ...
不清楚“2e2”是指表名称还是数值表达式,而“3.4”可能会被解释为数值或表名“3”和列名"4".
结论
强制执行此限制可确保对象名称和其他 SQL 元素之间的明确区别,从而使解析过程更加高效且明确。虽然这看起来像是一个小限制,但它有助于保持 SQL 语言的一致性和易用性。要解决此限制,可以将名称括在双引号中,如示例所示:
CREATE TABLE "15909434_user" ( ... )
以上是为什么 PostgreSQL 表名或列名不能以数字开头?的详细内容。更多信息请关注PHP中文网其他相关文章!