长度限制总结"/>
不同数据库标志符长度限制总结
测试环境及数据库版本信息
操作系统: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官方文档
.6/en/identifiers.html
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官方文档
.htm#TDDDG42210
均不超过30
Postgrel官方文档
.4/interactive/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
不超过NAMEDATALEN-1字节的一个标识符,NAMEDATALEN默认是64,所以最大长度是63,长名字会被截断。这个限制是可以被修改的:src / include / pg_config_manual.h NAMEDATALEN常数。
更多推荐
不同数据库标志符长度限制总结
发布评论