Какова максимальная длина имени таблицы в Oracle? - PullRequest
174 голосов
/ 16 апреля 2009

Какова максимальная длина имени таблицы и имени столбца в Oracle?

Ответы [ 12 ]

258 голосов
/ 16 апреля 2009

В Oracle 12.2 и выше максимальная длина имени объекта составляет 128 байтов.

В Oracle 12.1 и ниже максимальная длина имени объекта составляет 30 байтов.

207 голосов
/ 16 апреля 2009

научить человека ловить рыбу

Обратите внимание на тип и размер данных

>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)                
17 голосов
/ 17 апреля 2009

ОПИСАТЬ all_tab_columns

покажет TABLE_NAME VARCHAR2 (30)

Примечание. VARCHAR2 (30) означает ограничение в 30 байтов, а не ограничение в 30 символов, и поэтому может отличаться, если ваша база данных настроена / настроена на использование многобайтового набора символов.

Mike

8 голосов
/ 10 сентября 2010

Правильно, но до тех пор, пока вы используете символы ASCII, даже многобайтовый набор символов будет по-прежнему давать ограничение ровно в 30 символов ... поэтому, если вы не хотите помещать сердца и улыбающихся кошек в свои имена БД, у вас все хорошо ... .

5 голосов
/ 12 октября 2012

30 символов (на самом деле, как было сказано, байты).

Но не верь мне; Попробуйте сами:

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 байт.

3 голосов
/ 17 апреля 2009

Правила именования объектов схемы также могут быть полезны:

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

1 голос
/ 27 июля 2017

На Oracle 12.2, вы можете использовать встроенную постоянную, ORA_MAX_NAME_LEN, установить на 128 байтов (согласно 12.2) До Oracle 12.1 максимальный размер был 30 байтов.

0 голосов
/ 06 июня 2017

Я работаю над Oracle 12c 12.1. Однако не похоже, чтобы в именах столбцов / таблиц было более 30 символов.

Прочитайте страницу оракула, которая упоминает 30 байтов. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223

В 12c, хотя в all_tab_columns указано VARCHAR2 (128) для Table_Name, имя не может превышать 30 байт.

Нашел еще одну статью о 12c R2, которая, кажется, позволяет использовать до 128 символов. https://community.oracle.com/ideas/3338

0 голосов
/ 08 апреля 2016

Максимальная длина имени таблицы и столбца составляет 128 байтов или 128 символов. Это ограничение для пользователей базы данных Sybase. Я тщательно проверил этот ответ, поэтому с уверенностью разместил этот ответ.

0 голосов
/ 08 сентября 2015

Максимальная длина имен объектов базы данных Oracle составляет 30 байтов .

Правила именования объектов: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...