Oracleのテーブル名と列名の最大長はどれくらいですか?
12 に答える
Oracle 12.2以降では、オブジェクト名の最大長は128バイトです。
Oracle 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 all_tab_columns
TABLE_NAME VARCHAR2(30)が表示されます
注VARCHAR2(30)は、30文字の制限ではなく、30バイトの制限を意味するため、データベースがマルチバイト文字セットを使用するように構成/セットアップされている場合は異なる場合があります。
マイク
そうですが、ASCII文字を使用している限り、マルチバイト文字セットでも正確に30文字の制限があります...したがって、ハートと笑顔の猫を入れたい場合を除いて、DB名は問題ありません...
更新:前述のように、Oracle 12.2以降では、オブジェクト名の最大長は128バイトになりました。
この投稿の残りの部分は、Oracle 12.1以下に適用されました。制限は30文字(実際にはバイト)でした。
しかし、私の言葉を信じないでください。これを自分で試してください(Oracle 12.1以下):
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
スキーマオブジェクトの命名規則も役立つ場合があります。
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723
Oracle 12.2
では、128バイトに設定された組み込み定数、を使用できます( 12.2ORA_MAX_NAME_LEN
による)。以前は、Oracle 12.1
最大サイズは30バイトでした。
私が扱っている10gデータベースでは、テーブル名が最大30文字であることを知っています。列名の長さがわかりませんでした(ただし、30を超えていることはわかっています)。
30バイトしか保存できないデータディクショナリのため、名前の最大サイズは30文字です。
Oracleデータベースオブジェクト名の最大長は30バイトです。
オブジェクト名の規則: http ://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
私はOracle12c12.1に取り組んでいます。ただし、列/テーブル名に30文字を超えることはできないようです。
30バイトについて言及しているOracleページを読んでください。 https://docs.oracle.com/database/121/SQLRF/sql_elements008.htm#SQLRF00223
12cでは、all_tab_columnsはTable_Nameに対してVARCHAR2(128)と言っていますが、30バイトを超える名前は許可されていません。
12c R2に関する別の記事を見つけました。これは、これを最大128文字まで許可しているようです。 https://community.oracle.com/ideas/3338
テーブルと列の名前の最大長は128バイトまたは128文字です。この制限は、Sybaseデータベースユーザーを使用するためのものです。私はこの回答を徹底的に検証したので、自信を持ってこの回答を投稿しました。