You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL查询时表名必须加双引号吗?public前缀代表什么

PostgreSQL相关问题解答

1. 表名前public前缀的含义

PostgreSQL中的public是数据库默认的模式(Schema),本质是数据库对象的命名空间,用于分类隔离表、视图、函数等不同对象:

  • 默认配置下,所有未手动指定模式的新建对象,都会自动归属到public模式下
  • PostgreSQL中表的完整寻址规则为[模式名].[表名],如果会话参数search_path中包含public(默认配置已包含),写SQL时可以直接省略public.前缀。

2. 表名外侧双引号的规则

双引号不是所有场景的强制要求,仅当表名满足以下任意一个条件时才需要添加:

  • 建表时通过双引号指定了大小写敏感的名称
  • 表名包含空格、特殊符号
  • 表名和SQL内置关键字重名

PostgreSQL默认对未加双引号的标识符做自动小写转换:你执行SELECT * FROM Example时,PostgreSQL会自动将表名转换为example进行匹配,自然找不到你创建的大小写为Example的表,因此报错。如果查询时给Example加上双引号,PostgreSQL会严格按照你输入的大小写匹配表名,就能正常查询。

你熟悉的MySQL默认对表名大小写不敏感(具体规则和操作系统、数据库配置有关),没有类似的自动小写转换逻辑,因此不带引号的Example可以正常匹配到对应表。


内容的提问来源于stack exchange,提问作者AndreaNobili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:36:06