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 }media_types
{ ORDAudio
| ORDImage
| ORDVideo
| ORDDoc
| ORDDicom
| still_image_object_types
}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 -
LONGVARGRAPHIC -
VARGRAPHIC -
TIME
データ型がTIMEであるデータは、Oracleの日時データとしても表現できます。