测试环境及数据库版本信息
操作系统:Win7
Mysql版本:5.6.24
Oracle版本:11gR2
Postgre版本:9.4
SQLServer版本:2008
1、不同数据库标识符长度限制
长度单位:字符;
数据库名称
表名称
列名称
索引名称
别名
MySQL
64
64
64
64
256
已测试
Oracle
30
30
30
30
30
已测试
Postgre
(区分大小写)
63
63
63
63
63
已测试
SQLServer
124
128
128
128
128
已测试
ps:
1、 在SQLServer2008上测试,数据库名称的最大长度是124,不是128;
2、 Oracle的实例名长度限制为12位;
2、一般对象标识符(引用标识符除外)的特定平台的规则
《SQL技术手册》中的总结如下:
2.1标识符长度
平台
规格
SQL3
128个字符
MySQL
64个字符,别名为255个字符
Oracle
30个字符(字符数视字符集而定),数据库链接限定为128个字节
PostgreSQL
63个字符(NAMEDATALEN-1)
SQL Server
128个字符,临时表最多116个字符
2.2标识符可包含的字符
SQL3
任何数字或字符及下划线(_)符号
MySQL
任何数字、字符或符号,不能全部由数字组成
Oracle
任何数字或字符及下划线(_)、井号(#)及美元符号($)(最后2个符号不推荐使用),数据库链接页包含句点(.)
PostgreSQL
任何数字或字符及下划线(_)
SQL Server
任何数字或字符及下划线(_)、at符号(@)、井号(#)及美元符号($)
2.3标识符不能包含的字符
SQL3
空格或特殊字符
MySQL
句点(.)、斜线(/)或ASCII(0)及ASCII(255)。单引号(‘’)及双引号(“”)仅用于引用标识符内。标识符不应以空格结尾。
Oracle
空格、双引号(“”)或特殊字符
PostgreSQL
双引号(“”)
SQL Server
空格或特殊字符
2.4标识符的前缀必须为
SQL3
字母
MySQL
字母或数字,不能全部由数字组成
Oracle
字母
PostgreSQL
字母或下划线
SQL Server
字母、下划线(_)、at符号(@)、井号(#)
2.5 引用标志符的符号
SQL3
双引号(“”)
MySQL
单引号(‘’)或ANSI兼容模式下的双引号(“”)
Oracle
双引号(“”)
PostgreSQL
双引号(“”)
SQL Server
双引号(“”)或方括号([]),最好使用方括号
2.6大小写是否敏感
SQL3
否
MySQL
只有底层文件系统(Mac OS或Unix)才区分大小写。触发器、日志文件组及表空间是区分大小写的
Oracle
默认情况下不可以,但可以修改此默认值
PostgreSQL
否
SQL Server
默认情况下不可以,但可以修改此默认值
Ps:
1、 Mysql5.6.24中测试,可以用纯数字作为数据库名称、表名称、字段名称,但是执行查询时,会报错;
2、 Postgre的大小写敏感问题(windows环境):
当表名存在大写字母时,比如Ab:
执行select * from Ab 和select * from ab;都会报错:ERROR: relation"ab" does not exist;
只有当表名都是小写时,才不会报错,比如ab:
执行select * from AB 和select * from ab;都不会报错;
3、不同数据库关于标识符的官方文档
Mysql官方文档
Identifier
Maximum Length (characters)
Database
64 (NDB storage engine: 63)
Table
64 (NDB storage engine: 63)
Column
64
Index
64
Constraint
64
Stored Program
64
View
64
Tablespace
64
Server
64
Log File Group
64
Alias
256 (see exception following table)
Compound Statement Label
16
Oracle官方文档
均不超过30
Postgrel官方文档
不超过NAMEDATALEN-1字节的一个标识符,NAMEDATALEN默认是64,所以最大长度是63,长名字会被截断。这个限制是可以被修改的:src / include / pg_config_manual.h NAMEDATALEN常数。