Oracle'da bir tablo adının ve sütun adının maksimum uzunluğu nedir?
Oracle'da bir tablo adının ve sütun adının maksimum uzunluğu nedir?
Yanıtlar:
Gelen Oracle 12.2 ve en nesne adı uzunluğu üzerinde 128 bayttır.
Gelen Oracle 12.1 ve en nesne adı uzunluğu 30 altında bayttır.
Veri türü ve boyutuna dikkat edin
>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
döner, LOG_TABLE VARCHAR2(128)
ancak materyalize görünüm günlüğü adı için 30 veya daha fazla karaktere yaklaşan herhangi bir şey denerseniz, oldukça şaşırtıcı sonuçlar elde edersiniz.
DESCRIBE Instagram Hesabındaki Resim ve Videoları all_tab_columns
bir TABLE_NAME VARCHAR2 (30) gösterecek
Not VARCHAR2 (30), 30 karakterlik bir sınırlama değil, 30 baytlık bir sınırlama anlamına gelir ve bu nedenle veritabanınız çok baytlı bir karakter kümesi kullanacak şekilde yapılandırıldıysa / ayarlandıysa farklı olabilir.
mikrofon
Doğru, ancak ASCII karakterleri kullandığınız sürece, çok baytlı bir karakter seti bile tam olarak 30 karakter sınırlaması verecektir ... yani kalpleri ve gülümseyen kedileri koymak istemiyorsanız DB isimleriniz iyi ...
30 karakter (belirtildiği gibi gerçekten bayt).
Ama bana güvenme; bunu kendiniz deneyin:
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
Güncelleme: yukarıda belirtildiği gibi, Oracle 12.2 ve sonraki sürümlerinde, maksimum nesne adı uzunluğu artık 128 bayttır.
Şema nesnesi adlandırma kuralları da bazı yararları olabilir:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
Karşılaştığım 10g veritabanında tablo adlarının en fazla 30 karakter olduğunu biliyorum. Sütun adı uzunluğunun ne olduğunu söyleyemedim (ama bunun> 30 olduğunu biliyorum).
Oracle veritabanı nesne adları maksimum uzunluğu 30 bayttır .
Nesne Adı Kuralları: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Oracle 12c 12.1 üzerinde çalışıyorum. Ancak, sütun / tablo adları için 30'dan fazla karaktere izin verdiği görülmemektedir.
30 bayttan bahseden bir kehanet sayfasını okuyun. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
12c'de all_tab_columns Tablo_Adı için VARCHAR2 (128) demesine rağmen, 30 bayttan fazla ada izin vermez.
128 karaktere kadar izin veren 12c R2 hakkında başka bir makale buldu. https://community.oracle.com/ideas/3338
Tablo ve sütun adının maksimum uzunluğu 128 bayt veya 128 karakterdir. Bu sınır sybase veritabanı kullanıcıları içindir. Bu cevabı iyice doğruladım, böylece bu cevabı güvenle gönderdim.