PostgreSQL之大小敏感问题
背景
以前看过postgresql的书说是 大小写敏感,觉得自己注意应该也不是啥事。最近用postgresql数据库,由于之前用 orcle 数据库习惯的命名习惯,喜欢全大写,然后调用时写的大写也提示找不到,然后开始试验了下表名、字段、函数等名大写或驼峰命名,发现postgresql的大小写规则可以用“混乱”形容。当然“混乱”不是指postgresql没定义清楚,是指我这程序员的思维理解起来不那么舒服。
实际测试
1、创建一个STUDENT表
create table STUDENT(age int);
他会默认把 STUDENT 转为 student
2、你在创建表student 或者 STUDENT是会提示表已存在
3、当你创建 create table “STUDENT”(age int); 时,加双引号,才能成功
加双引号告诉PostgreSQL,不要转换成小写
结论:
-
PostgreSQL的数据库内核对大小写敏感。数据库名,数据表名,列名区分大小写。
-
在PostgreSQL中,执行SQL语句时,会把所有表示关键字,库名,表名,列名的字符串转换成小写。所以又说PostgreSQL不区分大小写的。
-
在书写SQL时,为了便于理解,默认:关键字大写,表名首字母大写,列名全部小写。
对象名:如库名,表名,字段名
数据库内核是区分大小写的。
只是为了方便使用,数据库在分析SQL脚本时,对不加双引号的所有对象名转化为小写字母。
除非你在对象名加上双引号。
所以
(1)从建表到应用,要么都加双引号,要么都不要加。
(2)如果以上这点做不到,所有的对象名给我写小写字母。
(3)字符串要用单引号括起来,双引号用来明确告诉数据库不要转换成小写,本次要区分大小写。