在Oracle中,表名和列名的最大长度是多少?
在 Oracle 12.2 及以上版本中,对象名称的最大长度为128个字节。
在 Oracle 12.1 及以下版本中,对象名称的最大长度为30个字节。
注意数据类型和大小
>describe all_tab_columns
VIEW all_tab_columns
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT NULL VARCHAR2(30)
DATA_TYPE VARCHAR2(106)
DATA_TYPE_MOD VARCHAR2(3)
DATA_TYPE_OWNER VARCHAR2(30)
DATA_LENGTH NOT NULL NUMBER
DATA_PRECISION NUMBER
DATA_SCALE NUMBER
NULLABLE VARCHAR2(1)
COLUMN_ID NUMBER
DEFAULT_LENGTH NUMBER
DATA_DEFAULT LONG
NUM_DISTINCT NUMBER
LOW_VALUE RAW(32)
HIGH_VALUE RAW(32)
DENSITY NUMBER
NUM_NULLS NUMBER
NUM_BUCKETS NUMBER
LAST_ANALYZED DATE
SAMPLE_SIZE NUMBER
CHARACTER_SET_NAME VARCHAR2(44)
CHAR_COL_DECL_LENGTH NUMBER
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
AVG_COL_LEN NUMBER
CHAR_LENGTH NUMBER
CHAR_USED VARCHAR2(1)
V80_FMT_IMAGE VARCHAR2(3)
DATA_UPGRADED VARCHAR2(3)
HISTOGRAM VARCHAR2(15)
describe user_mview_logs
会返回LOG_TABLE VARCHAR2(128)
,但如果尝试使用30个或更多字符来命名物化视图日志,则会得到一些令人困惑的结果。 - Saul描述 all_tab_columns
将显示一个 TABLE_NAME VARCHAR2(30)
注意,VARCHAR2(30) 表示 30 字节的限制,而不是 30 个字符的限制,因此如果您的数据库配置/设置使用多字节字符集,则可能会有所不同。
Mike
没错,但只要您使用ASCII字符,即使是多字节字符集,也仍然会受到30个字符的限制... 所以除非您想在数据库名称中放置心形和微笑猫,否则您很好...
更新:如上所述,从Oracle 12.2版本开始,对象名称最大长度现在为128字节。
本文其余部分适用于Oracle 12.1及以下版本:当时的限制为30个字符(实际上是30个字节)。
但不要只听我的话,请自行尝试(在Oracle 12.1或更低版本上进行):
SQL> create table I23456789012345678901234567890 (my_id number);
Table created.
SQL> create table I234567890123456789012345678901(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
由于数据字典只允许存储30个字节,因此名称的最大长度为30个字符。
Oracle数据库对象名称的最大长度为30个字节。
对象名称规则: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm