212

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

4

12 回答 12

312

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

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

于 2009-04-16T15:05:07.620 回答
243

教人钓鱼

注意数据类型和大小

>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)                
于 2009-04-16T16:10:40.353 回答
19

描述 all_tab_columns

将显示 TABLE_NAME VARCHAR2(30)

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

麦克风

于 2009-04-17T09:35:12.277 回答
8

是的,但只要你使用 ASCII 字符,即使是多字节字符集仍然会限制正好 30 个字符......所以除非你想把心和微笑的猫放进去,否则你的数据库名称就很好......

于 2010-09-10T09:06:49.117 回答
5

更新:如上所述,在 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
于 2012-10-12T15:39:00.657 回答
3

模式对象命名规则也可能有一些用处:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723

于 2009-04-16T20:10:40.230 回答
2

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

于 2017-07-27T16:48:49.763 回答
1

在我正在处理的 10g 数据库中,我知道表名最多为 30 个字符。无法告诉您列名长度是多少(但我知道它> 30)。

于 2009-04-16T15:04:53.113 回答
1

最大名称大小为 30 个字符,因为数据字典只允许存储 30 个字节

于 2015-05-21T05:38:12.800 回答
0

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

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

于 2015-09-08T09:31:49.497 回答
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

于 2017-06-06T08:50:45.593 回答
-4

表名和列名的最大长度为 128 个字节或 128 个字符。此限制适用于使用 sybase 数据库用户。我彻底验证了这个答案,所以我自信地发布了这个答案。

于 2016-04-08T11:00:53.580 回答