ओरेकल में एक टेबल नाम और कॉलम नाम की अधिकतम लंबाई क्या है?
ओरेकल में एक टेबल नाम और कॉलम नाम की अधिकतम लंबाई क्या है?
जवाबों:
में ओरेकल 12.2 और अधिकतम ऑब्जेक्ट नाम लंबाई ऊपर 128 बाइट्स है।
में ओरेकल 12.1 और अधिकतम ऑब्जेक्ट नाम लंबाई नीचे 30 बाइट है।
डेटा-प्रकार और आकार पर ध्यान दें
>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
रिटर्न LOG_TABLE VARCHAR2(128)
पर अगर आप भौतिक रूप से देखे गए लॉग नाम के लिए 30 वर्ण या उससे अधिक के पास जाने की कोशिश करते हैं, तो आपको कुछ काफी चौंकाने वाले परिणाम मिलेंगे।
DESCRIBE all_tab_columns
TABLE_NAME VARCHAR2 (30) दिखाएगा
नोट VARCHAR2 (30) का अर्थ 30 बाइट सीमा है, न कि 30 वर्ण सीमा, और इसलिए यह भिन्न हो सकता है यदि आपके डेटाबेस को मल्टीबाइट वर्ण सेट का उपयोग करने के लिए कॉन्फ़िगर / सेटअप किया गया है।
माइक
ठीक है, लेकिन जब तक आप ASCII वर्ण का उपयोग करते हैं तब भी एक मल्टीबाइट चरित्र सेट अभी भी बिल्कुल 30 वर्णों की सीमा देगा ... इसलिए जब तक आप दिलों को मुस्कुराते हुए और बिल्लियों को मुस्कुराते हुए नहीं चाहते हैं, तब तक आप अपने ठीक नाम का नाम ...
30 चार (बाइट्स, वास्तव में, जैसा कि कहा गया है)।
लेकिन मुझ पर भरोसा मत करो; अपने लिए यह प्रयास करें:
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
अपडेट किया गया: जैसा कि ऊपर बताया गया है, ओरेकल में 12.2 और बाद में, अधिकतम ऑब्जेक्ट नाम की लंबाई अब 128 बाइट्स है।
स्कीमा ऑब्जेक्ट नामकरण नियम भी कुछ काम के हो सकते हैं:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
10g डेटाबेस में मैं काम कर रहा हूं, मुझे पता है कि तालिका के नाम 30 वर्णों पर अधिकतम हैं। कॉलम नाम की लंबाई क्या है, यह आपको नहीं बता सकता (लेकिन मुझे पता है कि यह> 30) है।
Oracle डेटाबेस ऑब्जेक्ट का नाम अधिकतम लंबाई 30 बाइट्स है ।
ऑब्जेक्ट नाम नियम: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
मैं Oracle 12c 12.1 पर काम कर रहा हूँ। हालाँकि, ऐसा नहीं लगता कि यह कॉलम / टेबल नामों के लिए 30 से अधिक वर्णों की अनुमति देता है।
एक ओरेकल पेज के माध्यम से पढ़ें जिसमें 30 बाइट्स का उल्लेख है। https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
12 सी में, हालांकि सभी_टैब_कॉलेमेंट्स तालिका_Name के लिए VARCHAR2 (128) कहते हैं, यह 30 से अधिक बाइट्स नाम की अनुमति नहीं देता है।
12c R2 के बारे में एक और लेख मिला, जो इसे 128 अक्षरों तक की अनुमति देता प्रतीत होता है। https://community.oracle.com/ideas/3338
तालिका और स्तंभ नाम की अधिकतम लंबाई 128 बाइट्स या 128 वर्ण है। यह सीमा sybase डेटाबेस उपयोगकर्ताओं का उपयोग करने के लिए है। मैंने इस उत्तर को अच्छी तरह से सत्यापित किया, ताकि मैंने इस उत्तर को आत्मविश्वास से पोस्ट किया हो।