数据库使用中一定掉过的坑:大小写敏感

数据库大小写问题可以说让很多用数据库的人感受是:建表时,哇建出来了;使用时,我去,怎么找不到表,怎么找不到字段。没事,这是小场面。

先说为什么是坑及解决办法

说是坑的原因是:数据库在大小写敏感的配置下创建,如果修改为大小写不敏感后,原来创建的区分大小写的表名就不能访问。

如何避免:所有的库名,表名,字段名使用小写,单词用下划线"_"间隔,所有命名中,不允许使用 反引号,双引号包裹,ODS 层遇到特别骚的,需要提审批。这个规则保你在数据库使用达到 95% 以上的幸福。好了,没时间的同学,读到这里就可以撤了。

这篇文章对于工作中使用到多种类型数据库的朋友有一定的参考及帮助。

发个朋友圈交流时,还有不显事大的,要把双引号,单引号,反引号带上~~~。唉,这些都是泪啊。那么我也看看看不同的数据库,这块有多骚吧!这块如同迷宫,每个数据库都能自圆其说,所以我把 research 的过程列举一下,以供大家参考,研究的对象:Snowflake, Databend, MySQL, PostgreSQL。

  1. 库名和表名是不是支持大小写敏感,双引号,单引号,反引号在这里面扮演的角色。

  2. 字段名是不是支持大小写敏感

  3. 字段的内容对于大小写处理的特点

  4. 双引号和单引号在字符串上的区别

每个步骤,我会加上一个例来讲解。

1、库名和表名大小写问题

库名和表名的规则一样,这里只用一个表名表示

接下来请看表演

看起来一切完美,按着规则来非常丝滑。 记住一个口诀,可能就会好很多:

  • Snowflake 默认支持大小写敏感,需要用:双引号包裹,需要严格遵守。反引号是表名中的一部分

  • Databend  默认支持大小写敏感,兼容了 Pg 和 MySQL 两种风格的大小写

  • MySQL 在 Linux 下默认支持大小写敏感,需要有反引号包裹

  • PostgreSQL 是默认支持大小写敏感感,需要用双引号包裹

整体上说,如果你创建表的时间是什么样,访问的时写成什么样,问题不大。

2. 字段是否支持大小写

字段大小写, 不要惊讶,例如(大小写敏感所在要加上双引号或是反引号),如果区分大小敏感:Aa 和 AA 就是不同的字段: