Berapa panjang maksimum nama tabel dan nama kolom di Oracle?
Berapa panjang maksimum nama tabel dan nama kolom di Oracle?
Jawaban:
Dalam Oracle 12.2 dan di atas panjang nama objek maksimum adalah 128 byte.
Dalam Oracle 12.1 dan di bawah panjang nama objek maksimum adalah 30 byte.
Perhatikan tipe data dan ukurannya
>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
kembali LOG_TABLE VARCHAR2(128)
tetapi jika Anda mencoba sesuatu yang mendekati 30 karakter atau lebih untuk nama log tampilan terwujud, Anda akan mendapatkan beberapa hasil yang cukup membingungkan.
DESCRIBE all_tab_columns
akan menampilkan TABLE_NAME VARCHAR2 (30)
Catatan VARCHAR2 (30) berarti batasan 30 byte, bukan batasan 30 karakter, dan karenanya mungkin berbeda jika database Anda dikonfigurasi / disetel untuk menggunakan set karakter multibyte.
Mike
Benar, tetapi selama Anda menggunakan karakter ASCII bahkan set karakter multibyte masih akan memberikan batasan tepat 30 karakter ... jadi kecuali Anda ingin menaruh hati dan tersenyum kucing di Anda DB nama Anda baik-baik saja ...
30 char (byte, sungguh, seperti yang telah dinyatakan).
Tapi jangan percaya padaku; coba sendiri ini:
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
Diperbarui: seperti yang dinyatakan di atas, dalam Oracle 12.2 dan yang lebih baru, panjang nama objek maksimum sekarang adalah 128 byte.
Aturan penamaan objek skema mungkin juga bermanfaat:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
Dalam basis data 10g yang saya hadapi, saya tahu nama tabel maksimal 30 karakter. Tidak dapat memberi tahu Anda berapa panjang nama kolom (tapi saya tahu itu> 30).
Nama objek database Oracle panjang maksimum adalah 30 byte .
Aturan Nama Objek: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Saya sedang mengerjakan Oracle 12c 12.1. Namun, sepertinya tidak memungkinkan lebih dari 30 karakter untuk nama kolom / tabel.
Baca melalui halaman oracle yang menyebutkan 30 byte. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
Dalam 12c meskipun all_tab_columns mengatakan VARCHAR2 (128) untuk Table_Name, itu tidak mengizinkan lebih dari 30 byte nama.
Menemukan artikel lain tentang 12c R2, yang tampaknya memungkinkan ini hingga 128 karakter. https://community.oracle.com/ideas/3338
Panjang maksimum nama tabel dan kolom adalah 128 byte atau 128 karakter. Batas ini adalah untuk menggunakan pengguna basis data sybase. Saya memverifikasi jawaban ini dengan seksama, sehingga saya telah mengirimkan jawaban ini dengan percaya diri.