测试环境及数据库版本信息

操作系统: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常数。