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


当前回答

Oracle数据库对象名称最大长度为30字节。

对象名称规则: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm

其他回答

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

这篇文章的其余部分适用于Oracle 12.1及以下:限制是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

授人以渔

注意数据类型和大小

>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)                

在Oracle 12.2及以上版本中,最大对象名称长度为128字节。

在Oracle 12.1及以下版本中,最大对象名称长度为30字节。

是的,但是只要你使用ASCII字符,即使是多字节字符集也会给出恰好30个字符的限制…所以除非你想把爱心和微笑的猫放在你的DB名字里,你的罚款…

在Oracle 12.2上,你可以使用内置常量ORA_MAX_NAME_LEN, 设置为128字节(根据12.2) 在Oracle 12.1之前,最大大小为30字节。