pg 表名大小写问题

testdb=# create table TEST3 ( A INT);
CREATE TABLE
testdb=# \d test3;
               Table "public.test3"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 a      | integer |           |          |

testdb=# \d
                      List of relations
 Schema |         Name         |       Type        |  Owner
--------+----------------------+-------------------+----------
 public | TEST2                | table             | postgres
 public | TEST3                | partitioned table | postgres
 public | test                 | table             | postgres
 public | test3                | table             | postgres
 public | test3_y2006m02       | table             | postgres
(27 rows)

testdb=# \d TEST3
               Table "public.test3"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 a      | integer |           |          |

testdb=# insert into test3 values (1);
INSERT 0 1
testdb=# select * from test3;
 a
---
 1
(1 row)

testdb=# select *  from TEST3;
 a
---
 1
(1 row)

testdb=# drop table test3;
DROP TABLE
testdb=# \d
                      List of relations
 Schema |         Name         |       Type        |  Owner
--------+----------------------+-------------------+----------
 public | TEST2                | table             | postgres
 public | TEST3                | partitioned table | postgres
 public | test                 | table             | postgres
 public | test3_y2006m02       | table             | postgres
(26 rows)

testdb=# select * from test3;
ERROR:  relation "test3" does not exist
LINE 1: select * from test3;
                      ^
testdb=# select *  from TEST3;
ERROR:  relation "test3" does not exist
LINE 1: select *  from TEST3;
                       ^
testdb=# ^C
testdb=# ^C
testdb=# ^C
testdb=# select *  from "TEST3";
 city_id | logdate | peaktemp | unitsales
---------+---------+----------+-----------
(0 rows)

testdb=#

经过以上测试,  创建表的时候表名可以区分大小写。

但是select 的时候,是大写转成小写的。 !!!!!

why??

原因找到了,是因为创建表的时候, 表名加了" " , 所以select 查询,dml 等操作的时候也要加“ “ 。

而且创建表的时候表名和列名写大写,默认会转成小写。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL 中,数据库内部默认对标识符(如表名、列名等)区分大小写,这意味着 "myTable" 和 "MYTABLE" 被视为两个不同的名称。然而,在某些场景下,用户可能希望数据库能够忽略 SQL 语句中的大小写差异,以便提高可读性和一致性的体验。 要在 PostgreSQL 中配置忽略大小写,可以使用 `CASE_INSENSITIVE` 或 `CI` 关键字设置模式(mode)。这种设置会影响到连接到数据库的所有会话。 ### 配置步骤 #### 使用 pgAdmin 等 GUI 工具: 1. 登录您的 PostgreSQL 数据库服务器。 2. 打开 pgAdmin 或其他您使用的图形界面工具。 3. 导航至需要修改配置的数据库节点。 4. 找到“特性”(Properties) 或类似选项卡,并展开查看或编辑特性。 5. 查找与大小写相关的配置项(例如“搜索路径”、“函数”等),并找到允许设置大小写敏感性的部分。 6. 根据需要选择“CASE INSENSITIVE”模式。请注意,这可能不是直接可见的选项,因为具体的UI布局可能会有所不同。 #### 直接通过 SQL 修改配置: 如果通过命令行操作更便捷,您可以尝试以下 SQL 查询来更改模式的大小写处理方式: ```sql ALTER DATABASE your_database_name SET search_path TO 'your_schema', 'public', CASE_INSENSITIVE; ``` 这里的例子假设您有一个名为 `your_database_name` 的数据库,并想要在创建新对象时不区分大小写。替换 `your_database_name` 为实际数据库名称。 同样,对于特定的对象,如函数、视图等,也有相应的设置,但通常这些不需要频繁调整大小写处理策略。 ### 注意事项: - **安全性**:启用大小写不敏感可能会影响查询安全性和一致性检查,特别是在涉及敏感数据的操作中。应谨慎考虑其影响。 - **兼容性**:并非所有功能都支持大小写不敏感的配置,尤其是涉及到索引和唯一约束等部分。 - **性能**:虽然大多数操作不受影响,但在执行涉及大量数据或复杂查询时,性能可能略有下降。 确保在做出此类配置改变之前,充分理解其潜在的影响,并在必要时进行适当的测试和评估。此外,建议在生产环境外先进行实验和验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值