6 データ型
この章では、Oracleで認識され、SQLで使用可能なデータ型について説明します。
この章の内容は次のとおりです。
データ型の概要
データ型は、特定のタイプの情報またはデータの分類です。Oracleが処理する値は、それぞれデータ型を持ちます。値のデータ型により、固定された一連のプロパティが値に関連付けられます。このプロパティに応じて、Oracleは、あるデータ型の値を別のデータ型の値と区別して扱います。
次に、Oracleが認識するデータ型を示します。
ANSIでサポートされているデータ型
{ CHARACTER [VARYING] (size) | { CHAR | NCHAR } VARYING (size) | VARCHAR (size) | NATIONAL { CHARACTER | CHAR } [VARYING] (size) | { NUMERIC | DECIMAL | DEC } [ (precision [, scale ]) ] | { INTEGER | INT | SMALLINT } | FLOAT [ (size) ] | DOUBLE PRECISION | REAL }
Oracle組込みデータ型
{ character_datatypes | number_datatypes | long_and_raw_datatypes | datetime_datatypes | large_object_datatypes | rowid_datatypes }
Oracleが提供するデータ型
{ any_types | XML_types | spatial_types | media_types }
ユーザー定義データ型
ユーザー定義データ型は、Oracle組込みデータ型と、その他のユーザー定義データ型を使用して、アプリケーション内のデータの構造と動作をモデル化します。
関連項目:
データ・タイプの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
Oracle組込みデータ型
この項では、Oracle組込みデータ型の種類を示します。
character_datatypes
{ CHAR [ (size [ BYTE | CHAR ]) ] | VARCHAR2 (size [ BYTE | CHAR ]) | NCHAR [ (size) ] | NVARCHAR2 (size) }
datetime_datatypes
{ DATE | TIMESTAMP [ (fractional_seconds_precision) ] [ WITH [ LOCAL ] TIME ZONE ] | INTERVAL YEAR [ (year_precision) ] TO MONTH | INTERVAL DAY [ (day_precision) ] TO SECOND [ (fractional_seconds_precision) ] }
large_object_datatypes
{ BLOB | CLOB | NCLOB | BFILE }
long_and_raw_datatypes
{ LONG | LONG RAW | RAW (size) }
number_datatypes
{ NUMBER [ (precision [, scale ]) ] | FLOAT [ (precision) ] | BINARY_FLOAT | BINARY_DOUBLE }
rowid_datatypes
{ ROWID | UROWID [ (size) ] }
データ型のコードは、Oracle Databaseが内部的に使用します。DUMP
ファンクションによって、列またはオブジェクト属性のデータ型コードが戻されます。
表6-1 組込みデータ型の概要
コード | データ型 | 説明 |
---|---|---|
1 |
|
最大長が
|
1 |
|
最大長が
|
2 |
|
精度 |
2 |
|
精度 |
8 |
|
最大2GB(231から1を引いたバイト数)の可変長文字データ。下位互換性を維持するために提供されています。 |
12 |
|
紀元前4712年1月1日から紀元9999年12月31日までの日付を指定します。デフォルトの書式は、 |
100 |
|
32ビットの浮動小数点数。このデータ型には4バイトが必要です。 |
101 |
|
64ビットの浮動小数点数。このデータ型には8バイトが必要です。 |
180 |
|
日付の年、月、日および時刻の時、分、秒の値。 |
181 |
|
タイムゾーンによる時差などのすべての |
231 |
|
デフォルトの書式は、 |
182 |
|
年および月で期間を格納。 |
183 |
|
日、時、分および秒で期間を格納。
サイズは11バイトに固定されています。 |
23 |
|
長さ
|
24 |
|
最大2GBの可変長バイナリ・データ。 |
69 |
|
表の行のアドレスを一意に表すBASE64文字列。主に、 |
208 |
|
索引構成表の行の論理アドレスを表すBASE64文字列。オプションの |
96 |
|
長さ
|
96 |
|
長さ |
112 |
|
シングルバイト文字またはマルチバイト文字を含むキャラクタ・ラージ・オブジェクト。固定幅および可変幅の文字セットがサポートされ、両方ともデータベース文字セットで使用されます。最大サイズは、4GBから1を引いたバイト数にデータベース・ブロック・サイズを掛けた値です。 |
112 |
|
Unicodeキャラクタを含むキャラクタ・ラージ・オブジェクト。固定幅および可変幅の文字セットがサポートされます。両方の文字セットでデータベースの各国語文字セットを使用します。最大サイズは、4GBから1を引いたバイト数にデータベース・ブロック・サイズを掛けた値です。各国語文字セット・データが格納されます。 |
113 |
|
バイナリ・ラージ・オブジェクト。最大サイズは、4GBから1を引いたバイト数にデータベース・ブロック・サイズを掛けた値です。 |
114 |
|
データベース外に保存された大きなバイナリ・ファイルへロケータを格納。データベース・サーバー上に存在する外部LOBへのバイト・ストリームI/Oアクセスを可能にします。最大サイズは4GBです。 |
Oracleが提供するデータ型
この項では、Oracleが提供するデータ型の構文を示します。
any_types
{ SYS.AnyData | SYS.AnyType | SYS.AnyDataSet }
spatial_types
{ SDO_Geometry | SDO_Topo_Geometry |SDO_GeoRaster }
XML_types
{ XMLType | URIType }
Oracleデータ型への変換
表とクラスタを作成するSQL文では、ANSIデータ型、およびIBM社の製品SQL/DSとDB2のデータ型も使用できます。Oracleでは、Oracleデータ型の名前と異なるANSIまたはIBMのデータ型の名前を認識し、列のデータ型の名前として記録します。その後、次の表に示す変換に基づいて、Oracleのデータ型で列データを格納します。
表6-2 Oracleデータ型に変換されるANSIデータ型
ANSI SQLデータ型 | Oracleデータ型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ノート:
-
NUMERIC
データ型およびDECIMAL
データ型では、固定小数点数のみを指定できます。これらのデータ型では、位取りs
のデフォルトは0です。 -
FLOAT
データ型は、2進精度bを持つ浮動小数点数です。このデータ型のデフォルト精度は、126桁の2進精度または38桁の10進精度です。 -
DOUBLE PRECISION
データ型は126桁の2進精度を持つ浮動小数点数です。 -
REAL
データ型は63桁の2進精度(18桁の10進精度)を持つ浮動小数点数です。
次のSQL/DSとDB2のデータ型には、対応するOracleデータ型がありません。次のデータ型を持つ列は定義しないでください。
-
GRAPHIC
-
LONG
VARGRAPHIC
-
VARGRAPHIC
-
TIME
データ型がTIME
であるデータは、Oracleの日時データとしても表現できます。