Jaka jest maksymalna długość nazwy tabeli i nazwy kolumny w Oracle?
Jaka jest maksymalna długość nazwy tabeli i nazwy kolumny w Oracle?
Odpowiedzi:
W Oracle 12.2 i nowszych maksymalna długość nazwy obiektu wynosi 128 bajtów.
W Oracle 12.1 i poniżej maksymalna długość nazwy obiektu wynosi 30 bajtów.
Zwróć uwagę na typ danych i rozmiar
>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)
describe user_mview_logs
powraca, LOG_TABLE VARCHAR2(128)
ale jeśli spróbujesz czegoś, co zbliża się do 30 lub więcej znaków dla zmaterializowanej nazwy dziennika widoku, uzyskasz dość intrygujące wyniki.
OPISUJ wszystkie kolumny_tab
pokaże TABLE_NAME VARCHAR2 (30)
Uwaga VARCHAR2 (30) oznacza ograniczenie 30 bajtów, a nie ograniczenie 30 znaków, a zatem może być inne, jeśli baza danych jest skonfigurowana / skonfigurowana do używania zestawu znaków wielobajtowych.
Mikrofon
Tak, ale tak długo, jak używasz znaków ASCII, nawet zestaw znaków wielobajtowych nadal dawałby ograniczenie dokładnie 30 znaków ... więc jeśli nie chcesz wkładać serc i uśmiechniętych kotów w swoje nazwy DB, to dobrze ...
30 znaków (tak naprawdę, jak powiedziano).
Ale nie ufajcie mi; spróbuj tego sam:
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
Zaktualizowano: jak stwierdzono powyżej, w Oracle 12.2 i nowszych maksymalna długość nazwy obiektu wynosi teraz 128 bajtów.
Przydatne mogą być również reguły nazewnictwa obiektów schematu:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
W bazie danych 10 g, z którą mam do czynienia, wiem, że nazwy tabel mają maksymalnie 30 znaków. Nie mogę powiedzieć, jaka jest długość nazwy kolumny (ale wiem, że to> 30).
Maksymalna długość nazw obiektów bazy danych Oracle wynosi 30 bajtów .
Reguły nazw obiektów: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Pracuję na Oracle 12c 12.1. Nie wydaje się jednak, aby dopuszczał więcej niż 30 znaków dla nazw kolumn / tabel.
Przeczytaj stronę wyroczni, która wymienia 30 bajtów. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
W 12c, chociaż kolumny all_tab_columns zawierają VARCHAR2 (128) dla Table_Name, nie pozwalają na nazwę większą niż 30 bajtów.
Znaleziono kolejny artykuł o 12c R2, który wydaje się pozwalać na to do 128 znaków. https://community.oracle.com/ideas/3338
Maksymalna długość nazwy tabeli i kolumny wynosi 128 bajtów lub 128 znaków. Ten limit dotyczy korzystania z użytkowników bazy danych sybase. Dokładnie zweryfikowałem tę odpowiedź, więc opublikowałem tę odpowiedź z przekonaniem.