Oracle中表名和列名的最大长度是多少?
答案 0 :(得分:257)
在Oracle 12.2及以上,最大对象名称长度为128个字节。
在Oracle 12.1及以下,最大对象名称长度为30个字节。
答案 1 :(得分:206)
注意数据类型和大小
>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)
答案 2 :(得分:17)
DESCRIBE all_tab_columns
将显示TABLE_NAME VARCHAR2(30)
注意VARCHAR2(30)表示30字节限制,而不是30个字符的限制,因此如果您的数据库配置/设置为使用多字节字符集,则可能会有所不同。
麦克
答案 3 :(得分:8)
是的,但是只要你使用ASCII字符,即使多字节字符集仍然会限制正好30个字符......所以除非你想把心脏和微笑的猫放在你的DB名字中你的罚款...
答案 4 :(得分:5)
30 char(字节,真的,如上所述)。
但不要相信我;试试这个:
SQL> create table a23456789012345678901234567890 (my_id number);
Table created.
SQL> create table a234567890123456789012345678901(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
更新:如上所述,在Oracle 12.2及更高版本中,最大对象名称长度现在为128个字节。
答案 5 :(得分:3)
架构对象命名规则也可能有用:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
答案 6 :(得分:1)
在Oracle 12.2
上,您可以使用内置常量ORA_MAX_NAME_LEN
,
设置为128个字节(根据12.2)
在Oracle 12.1
之前,最大大小为30个字节。
答案 7 :(得分:0)
在我正在处理的10g数据库中,我知道表名最多为30个字符。无法告诉你列名长度是多少(但我知道它是> 30)。
答案 8 :(得分:0)
最大名称大小为30个字符,因为数据字典只允许存储30个字节
答案 9 :(得分:0)
Oracle数据库对象名称的最大长度为 30字节。
对象名称规则: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
答案 10 :(得分:0)
我正在使用Oracle 12c 12.1。但是,它似乎不允许列/表名称超过30个字符。
通读一个提到30个字节的oracle页面。 https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
在12c中,尽管all_tab_columns对Table_Name说的是VARCHAR2(128),但它不允许超过30个字节的名称。
发现另一篇关于12c R2的文章,似乎允许这个最多128个字符。 https://community.oracle.com/ideas/3338
答案 11 :(得分:-4)
表名和列名的最大长度为128个字节或128个字符。 此限制适用于使用sybase数据库用户。我彻底验证了这个答案,所以我自信地发布了这个答案。