Oracle中表名的最大长度是多少?

rob*_*oll 183 oracle name-length

Oracle中表名和列名的最大长度是多少?

TSt*_*per 268

Oracle 12.2及更高版本中,最大对象名长度为128个字节.

Oracle 12.1及更低版本中,最大对象名称长度为30个字节.

  • 它实际上基于可兼容参数中的版本。如果您具有兼容设置为11.2.0的12.2 DB,仍然将您限制为30个字符。 (4认同)

小智 216

教一个人钓鱼

注意数据类型和大小

>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)                
Run Code Online (Sandbox Code Playgroud)

  • 对这个答案持保留态度。在 12.1.0.2.0 版本中,`describe user_mview_logs` 返回 `LOG_TABLE VARCHAR2(128)`,但是如果你尝试任何接近 30 个字符或更多的物化视图日志名称,你会得到一些非常令人费解的结果。 (4认同)
  • 使用标准SQL,您还可以通过查询表来确定长度:select*from all_tab_columns其中table_name ='ALL_TAB_COLUMNS'; (3认同)
  • 尽管长度为 128,但如果您的兼容参数设置为旧版本,您仍然会遇到 30 个字符的限制。 (3认同)
  • 描述基表 [all_objects](http://docs.oracle.com/database/122/REFRN/ALL_OBJECTS.htm#REFRN20146) 可能会更好,因为这表明名称限制几乎适用于具有all_* 视图基于它。 (2认同)

小智 18

DESCRIBE all_tab_columns

将显示一个TABLE_NAME VARCHAR2(30)

注意VARCHAR2(30)表示30字节限制,而不是30个字符的限制,因此如果您的数据库配置/设置为使用多字节字符集,则可能会有所不同.

麦克风


小智 8

是的,但是只要你使用ASCII字符,即使多字节字符集仍然会限制正好30个字符...所以除非你想把心脏和微笑的猫放在你的DB名称中你的罚款......


Wil*_*tok 5

30个字符(字节,确实,如前所述)。

但是不要相信我。自己尝试一下:

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
Run Code Online (Sandbox Code Playgroud)

更新:如上所述,在Oracle 12.2和更高版本中,最大对象名称长度现在为128字节。