この章では、Oracleで認識され、SQLで使用可能なデータ型について説明します。
この章では、次の項目について説明します。
データ型は、特定のタイプの情報またはデータの分類です。Oracleが処理する値は、それぞれデータ型を持ちます。値のデータ型は、一定のプロパティをその値に対応付けます。このプロパティに応じて、Oracleは、あるデータ型の値を別のデータ型の値と区別して扱います。
次に、Oracleが認識するデータ型を示します。
{ 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 }
{ character_datatypes | number_datatypes | long_and_raw_datatypes | datetime_datatypes | large_object_datatypes | rowid_datatypes }
{ any_types | XML_types | spatial_types | media_types | expression_filter_type }
ユーザー定義データ型は、Oracle組込みデータ型と、その他のユーザー定義データ型を使用して、アプリケーション内のデータの構造と動作をモデル化します。
参照: 『Oracle Database SQL言語リファレンス』の「データ型」を参照してください。 |
この項では、Oracle組込みデータ型の種類を示します。
{ CHAR [ (size [ BYTE | CHAR ]) ] | VARCHAR2 (size [ BYTE | CHAR ]) | NCHAR [ (size) ] | NVARCHAR2 (size) }
{ DATE | TIMESTAMP [ (fractional_seconds_precision) ] [ WITH [ LOCAL ] TIME ZONE ]) | INTERVAL YEAR [ (year_precision) ] TO MONTH | INTERVAL DAY [ (day_precision) ] TO SECOND [ (fractional_seconds_precision) ] }
{ BLOB | CLOB | NCLOB | BFILE }
{ LONG | LONG RAW | RAW (size) }
{ NUMBER [ (precision [, scale ]) ] | FLOAT [ (precision) ] | BINARY_FLOAT | BINARY_DOUBLE }
{ ROWID | UROWID [ (size) ] }
データ型のコードは、Oracle Databaseが内部的に使用します。DUMP
ファンクションによって、列またはオブジェクト属性のデータ型コードが戻されます。
表6-1 組込みデータ型の概要
コード | データ型 | 説明 |
---|---|---|
1 |
|
最大長が
|
1 |
|
最大長が |
2 |
|
精度 |
2 |
|
精度 |
8 |
|
最大2GB(231から1を引いたバイト数)の可変長文字データ。下位互換性のために提供されます。 |
12 |
|
紀元前4712年1月1日から紀元9999年12月31日までの日付を指定します。デフォルトの書式は、 |
21 |
|
32ビット浮動小数点。このデータ型には5バイト(バイト長を含む)必要です。 |
22 |
|
64ビット浮動小数点。このデータ型には9バイト(バイト長を含む)必要です。 |
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 Database SQL言語リファレンス』の「データ型」を参照してください。 |
この項では、Oracleが提供するデータ型の構文を示します。
any_types
{ SYS.AnyData | SYS.AnyType | SYS.AnyDataSet }
XML_types
{ XMLType | URIType }
spatial_types
{ SDO_Geometry | SDO_Topo_Geometry |SDO_GeoRaster }
media_types
{ ORDAudio | ORDImage | ORDVideo | ORDDoc | ORDDicom | still_image_object_types }
expression_filter_type
Expression
表とクラスタを作成する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進精度を持つ浮動小数点数です。
表6-3 Oracleデータ型に変換されるSQL/DSとDB2のデータ型
SQL/DSとDB2データ型 | Oracleデータ型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
注意:
DECIMAL
データ型では、固定小数点数のみを指定できます。このデータ型では、s
のデフォルトは0です。
FLOAT
データ型は、2進精度b
を持つ浮動小数点数です。このデータ型のデフォルト精度は、126桁の2進精度または38桁の10進精度です。
次のSQL/DSとDB2のデータ型には、対応するOracleデータ型がありません。次のデータ型を持つ列は定義しないでください。
GRAPHIC
LONG
VARGRAPHIC
VARGRAPHIC
TIME
データ型がTIME
であるデータは、Oracleの日時データとしても表現できます。
参照: 『Oracle Database SQL言語リファレンス』の「データ型」を参照してください。 |