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

144

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

Теги:
name-length

12 ответов

200
Лучший ответ

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

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

  • 2
    На самом деле это зависит от версии в совместимом параметре. Если у вас есть 12.2 БД с совместимым набором 11.2.0, по-прежнему ограничивает вас до 30 символов.
185

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

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

>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)                
  • 3
    В стандартном SQL вы также можете определить длину, выполнив запрос к таблице: выберите * из all_tab_columns, где table_name = 'ALL_TAB_COLUMNS';
  • 1
    Может быть, лучше описать базовую таблицу all_objects , так как это показывает, что ограничение имени применяется практически ко всему, у кого основано представление all_ *.
Показать ещё 2 комментария
14

DESCRIBE all_tab_columns

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

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

Mike

7

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

  • 0
    Просто чтобы прояснить это: существуют многобайтовые наборы символов, которые ДОЛЖНЫ требовать более одного байта на символ ASCII, но их нельзя использовать в качестве набора символов базы данных, поскольку для них существует строгое требование «расширенного набора ASCII». (на самом деле это ASCII или EBCDIC в зависимости от платформы).
3

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

Но не верьте мне; попробуйте это для себя:

SQL> create table a23545678901234567890123456789 (my_id number);

Table created.



SQL> create table a235456789012345678901234567890(my_id number);


ERROR at line 1:

ORA-00972: identifier is too long
3

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

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

0

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

0

Я работаю над 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
    SELECT name, значение FROM v $ параметр WHERE name = 'совместимый'; Должно быть 12.2.0
0

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

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

0

Максимальный размер имени составляет 30 символов из-за словаря данных, который позволяет хранить только 30 байтов

0

В базе данных 10g, с которой я имею дело, я знаю, что имена таблиц максимальны в 30 символов. Не могу рассказать вам, какова длина имени столбца (но я знаю его > 30).

  • 1
    Имена столбцов также ограничены 30 символами, но не> 30
-5

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

  • 2
    это вопрос оракула.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню