文字列
CHAR
CHARは固定長文字列を格納するデータ型です。
最大長をsizeで指定することができます。
セマンティクスとしてBYTEかCHARのいずれかを指定することができます。BYTEを指定すると、バイト・セマンティクスとなり、sizeはバイト単位での指定となります。CHARを指定すると、キャラクタ・セマンティクスとなり、sizeは文字単位での指定となります。
NCHAR
NCHARはUnicodeによる固定長文字列を格納するデータ型です。
最大長をsizeで指定することができます。
VARCHAR2
VARCHAR2は可変長文字列を格納するデータ型です。
最大長をsizeで指定します。
セマンティクスとしてBYTEかCHARのいずれかを指定することができます。BYTEを指定すると、バイト・セマンティクスとなり、sizeはバイト単位での指定となります。CHARを指定すると、キャラクタ・セマンティクスとなり、sizeは文字単位での指定となります。
NVARCHAR2
NVARCHAR2はUnicodeによる可変長文字列を格納するデータ型です。
最大長をsizeで指定します。
数値
NUMBER
精度とスケールが指定された数値を格納するデータ型です。
精度をprecisionで指定することができます。指定できる範囲は、1 ≦ precision ≦ 38 です。precisionを省略した場合、精度は38桁となります。
スケールをscaleで指定することができます。指定できる範囲は、-84 ≦ scale ≦ 127 です。スケールが正の値の場合、その値が小数点以下の桁数となります。
たとえば、NUMBER(5,2) は 0 および 0.01 〜 999.99 までの数値を扱えます。
BINARY_FLOAT
BINARY_FLOATは32ビットの浮動小数点数を格納するデータ型です。
BINARY_DOUBLE
BINARY_DOUBLEは64ビットの浮動小数点数を格納するデータ型です。
日付と時刻
DATE
日付と時刻を格納するデータ型です。書式は YYYY-MM-DD HH:MM:SS です。
TIMESTAMP
日付と時刻を格納するデータ型です。書式は YYYY-MM-DD HH:MM:SS [FFFFFFFFF] です。
秒の小数点以下の桁数をfractional_secondsで指定することができます。指定できる範囲は、1 ≦ fractional_seconds ≦ 9 です。fractional_secondsを省略した場合、6桁となります。
日付と時刻に加えてタイムゾーンに関する情報を含めるには、WITH TIMEZONEまたはWITH LOCAL TIMEZONEを指定します。
INTERVAL YEAR TO MONTH
日付の差分(年と月)の差分を格納するデータ型です。
精度をyear_precisionで指定することができます。指定できる範囲は、0 ≦ year_precision ≦ 9 です。year_precisionを省略した場合、精度は2桁となります。
INTERVAL DAY TO SECOND
日付と時刻の差分(日、時間、分、秒)を格納するデータ型です。
日の精度をday_precisionで指定することができます。指定できる範囲は、0 ≦ day_precision ≦ 9 です。day_precisionを省略した場合、精度は2桁となります。
秒の小数点以下の桁数をfractional_secondsで指定することができます。指定できる範囲は、0 ≦ fractional_seconds ≦ 9 です。fractional_secondsを省略した場合、精度は6桁となります。
バイナリ・データ
RAW
バイナリ・データを格納するデータ型です。
LONG RAW
可変長バイナリ・データを格納するデータ型です。
最大サイズは2GBです。
ラージ・オブジェクト
CLOB
キャラクタ・ラージ・オブジェクトを格納するデータ型です。
最大サイズは、4GB -1 にデータベース・ブロックサイズを掛けた値です。
NCLOB
Unicodeキャラクタを含むキャラクタ・ラージ・オブジェクトを格納するデータ型です。
最大サイズは、4GB -1 にデータベース・ブロックサイズを掛けた値です。
BLOB
バイナリ・ラージ・オブジェクトを格納するデータ型です。
最大サイズは、4GB -1 にデータベース・ブロックサイズを掛けた値です。
その他
ROWID
索引構成表の論理アドレスを表すBASE64文字列を格納するデータ型です。
最大サイズをsizeで指定することができます。
BFILE
データベース外に保存される大きなバイナリ・ファイルへのロケーたを格納するデータ型です。
最大サイズは4GBです。
ANSI SQLとOracleのデータ型の違い
ANSI SQLデータ型とOracleデータ型とでは多少異なります。両者の違いを次に示します。
| ANSI SQLデータ型 | Oracleデータ型 |
|---|---|
| CHARACTER(n) CHAR(n) | CHAR(n) |
| CHARACTER VARYING(n) CHAR VARYING(n) | VARCHAR(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) | NUMBER(p,s) |
| INTEGER INT SMALLINT | NUMBER(38) |
| FLOAT DOUBLE PRECISION REAL | NUMBER |