ヘッダーをスキップ
Oracle Database SQL言語クイック・リファレンス
11g リリース1(11.1)
E05749-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

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
| expression_filter_type
}

ユーザー定義データ型

ユーザー定義データ型は、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

VARCHAR2(size [BYTE | CHAR])

最大長がsize バイトまたはsize文字の可変長文字列。最大サイズは4000バイトまたは4000文字、最小サイズは1バイトまたは1文字です。VARCHAR2には、size を指定する必要があります。

BYTEは、列がバイト長セマンティクスを持つことを示し、CHARは、列がキャラクタ・セマンティクスを持つことを示します。

1

NVARCHAR2(size)

最大長がsize 文字の可変長Unicode文字列。最大バイト数は、AL16UTF16エンコーディングの場合はsize の2倍、UTF8エンコーディングの場合はsize の3倍です。最大サイズは、各国語キャラクタ・セット定義(上限4000バイト)によって決定されます。NVARCHAR2size を指定する必要があります。

2

NUMBER [ (p [, s]) ]

精度p、位取りs を持つ数。精度p には1から38の値を指定できます。位取りs には-84から127の値を指定できます。精度とスケールは両方とも10進数です。NUMBERの値には1から22バイトを指定する必要があります。

2

FLOAT [(p)]

精度p を持つNUMBERデータ型のサブタイプ。FLOATの値は、内部的にはNUMBERとして表されます。精度pには1から126の2進数を指定できます。FLOATの値には1から22バイトを指定する必要があります。

8

LONG

最大2GB(231から1を引いたバイト数)の可変長文字データ。下位互換性のために提供されます。

12

DATE

紀元前4712年1月1日から紀元9999年12月31日までの日付を指定します。デフォルトの書式は、NLS_DATE_FORMATパラメータによって明示的に、またはNLS_TERRITORYパラメータによって暗黙的に決定されます。サイズは7バイトに固定されています。このデータ型には、YEARMONTHDAYHOURMINUTEおよびSECONDの日時フィールドが含まれます。小数部の秒数およびタイムゾーンは含まれません。

21

BINARY_FLOAT

32ビット浮動小数点。このデータ型には5バイト(バイト長を含む)必要です。

22

BINARY_DOUBLE

64ビット浮動小数点。このデータ型には9バイト(バイト長を含む)必要です。

180

TIMESTAMP [(fractional_seconds_precision)]

日付の年、月、日および時刻の時、分、秒の値。fractional_seconds_precision は、SECOND日時フィールドの小数部の桁数です。fractional_seconds_precision の有効範囲は0から9です。デフォルトは6です。デフォルトの書式は、NLS_DATE_FORMATパラメータによって明示的に、またはNLS_TERRITORYパラメータによって暗黙的に決定されます。精度によって、サイズは7から11バイトになります。このデータ型には、YEARMONTHDAYHOURMINUTEおよびSECONDの日時フィールドが含まれます。小数部の秒数は含まれますが、タイムゾーンは含まれません。

181

TIMESTAMP [(fractional_seconds)] WITH TIME ZONE

タイムゾーンによる時差などのすべてのTIMESTAMPの値。fractional_seconds_precision は、SECOND日時フィールドの小数部の桁数です。有効範囲は0から9です。デフォルトは6です。デフォルトの書式は、NLS_DATE_FORMATパラメータによって明示的に、またはNLS_TERRITORYパラメータによって暗黙的に決定されます。サイズは13バイトに固定されています。このデータ型には、YEARMONTHDAYHOURMINUTESECONDTIMEZONE_HOURおよびTIMEZONE_MINUTEの日時フィールドが含まれます。小数部の秒数および明示的なタイムゾーンが含まれます。

231

TIMESTAMP [(fractional_seconds)] WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONEのすべての値。ただし、次に示す例外があります。

  • データベースへの格納時、データがデータベースのタイムゾーンに正規化されている場合。

  • データの検索時、ユーザーがセッションのタイムゾーンでデータを検索する場合。

デフォルトの書式は、NLS_DATE_FORMATパラメータによって明示的に、またはNLS_TERRITORYパラメータによって暗黙的に決定されます。精度によって、サイズは7から11バイトになります。

182

INTERVAL YEAR [(year_precision)] TO MONTH

年および月で期間を格納。year_precision は、YEAR日時フィールドの桁数です。有効範囲は0から9です。デフォルトは2です。サイズは5バイトに固定されています。

183

INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds)]

日、時、分および秒で期間を格納。

  • day_precision は、DAY日時フィールドの最大桁数です。有効範囲は0から9です。デフォルトは2です。

  • fractional_seconds_precision は、SECONDフィールドの小数部の桁数です。有効範囲は0から9です。デフォルトは6です。

サイズは11バイトに固定されています。

23

RAW(size)

長さsizeバイトのバイナリ・データ。最大サイズは2000バイトです。RAW値には、size を指定する必要があります。

24

LONG RAW

最大2GBの可変長バイナリ・データ。

69

ROWID

表の行のアドレスを一意に表すBASE64文字列。主に、ROWID疑似列によって戻される値のためのデータ型です。

208

UROWID [(size)]

索引構成表の行の論理アドレスを表すBASE64文字列。オプションのsize は、UROWID型の列のサイズです。最大サイズおよびデフォルトは4000バイトです。

96

CHAR [(size [BYTE | CHAR])]

長さsize バイトまたはsize文字の固定長文字データ。最大サイズは2000バイトまたは2000文字です。デフォルトおよび最小のsize は1バイトです。

BYTEおよびCHARは、VARCHAR2と同じセマンティクスを持ちます。

96

NCHAR[(size)]

長さsize 文字の固定長文字データ。最大バイト数は、AL16UTF16エンコーディングの場合はsize の2倍、UTF8エンコーディングの場合はsize の3倍です。最大サイズは、各国語キャラクタ・セット定義(上限2000バイト)によって決定されます。デフォルトおよび最小のsize は1文字です。

112

CLOB

シングルバイト・キャラクタまたはマルチバイト・キャラクタを含むキャラクタ・ラージ・オブジェクト。固定幅および可変幅のキャラクタ・セットがサポートされます。両方のキャラクタ・セットでデータベース・キャラクタ・セットを使用します。最大サイズは、(4GB-1)×(データベース・ブロック・サイズ)です。

112

NCLOB

Unicodeキャラクタを含むキャラクタ・ラージ・オブジェクト。固定幅および可変幅のキャラクタ・セットがサポートされます。両方のキャラクタ・セットでデータベースの各国語キャラクタ・セットを使用します。最大サイズは、(4GB-1)×(データベース・ブロック・サイズ)です。各国語キャラクタ・セットのデータを格納します。

113

BLOB

バイナリ・ラージ・オブジェクト。最大サイズは、(4GB-1)×(データベース・ブロック・サイズ)です。

114

BFILE

データベース外に保存された大きなバイナリ・ファイルへロケータを格納。データベース・サーバー上に存在する外部LOBへのバイト・ストリームI/Oアクセスを可能にします。最大サイズは4GBです。



参照:

『Oracle Database SQL言語リファレンス』の「データ型」を参照してください。


Oracleが提供するデータ型

この項では、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

Oracleデータ型への変換

表とクラスタを作成するSQL文では、ANSIデータ型、およびIBM社の製品SQL/DSとDB2のデータ型も使用できます。Oracleでは、Oracleデータ型の名前と異なるANSIまたはIBMのデータ型の名前を認識し、列のデータ型の名前として記録します。その後、次の表に示す変換に基づいて、Oracleのデータ型で列データを格納します。

表6-2 Oracleデータ型に変換されるANSIデータ型

ANSI SQLデータ型 Oracleデータ型

CHARACTER(n)

CHAR(n)

CHAR(n)

CHARACTER VARYING(n)

CHAR VARYING(n)

VARCHAR2(n)

NATIONAL CHARACTER(n)

NATIONAL CHAR(n)

NCHAR(n)

NCHAR(n)

NATIONAL CHARACTER VARYING(n)

NATIONAL CHAR VARYING(n)

NCHAR VARYING(n)

NVARCHAR2(n)

NUMERIC[(p,s)]

DECIMAL[(p,s)] (注意 a)

NUMBER(p,s)

INTEGER

INT

SMALLINT

NUMBER(38)

FLOAT注意 b

DOUBLE PRECISION注意 c

REAL注意 d

FLOAT(126)

FLOAT(126)

FLOAT(63)


注意:

    1. NUMERICデータ型およびDECIMALデータ型では、固定小数点数のみを指定できます。これらのデータ型では、位取り(s)のデフォルトは0です。

    2. FLOATデータ型は、2進精度bを持つ浮動小数点数です。このデータ型のデフォルト精度は、126桁の2進精度または38桁の10進精度です。

    3. DOUBLE PRECISIONデータ型は126桁の2進精度を持つ浮動小数点数です。

    4. REALデータ型は63桁の2進精度または18桁の10進精度を持つ浮動小数点数です。

表6-3 Oracleデータ型に変換されるSQL/DSとDB2のデータ型

SQL/DSとDB2データ型 Oracleデータ型

CHARACTER(n)

CHAR(n)

VARCHAR(n)

VARCHAR(n)

LONG VARCHAR

LONG

DECIMAL(p,s) (注意 a)

NUMBER(p,s)

INTEGER

SMALLINT

NUMBER(38)

FLOAT注意 b

NUMBER


注意:

    1. DECIMALデータ型では、固定小数点数のみを指定できます。このデータ型では、sのデフォルトは0です。

    2. FLOATデータ型は、2進精度bを持つ浮動小数点数です。このデータ型のデフォルト精度は、126桁の2進精度または38桁の10進精度です。

次のSQL/DSとDB2のデータ型には、対応するOracleデータ型がありません。次のデータ型を持つ列は定義しないでください。

データ型がTIMEであるデータは、Oracleの日時データとしても表現できます。


参照:

『Oracle Database SQL言語リファレンス』の「データ型」を参照してください。