分類 | データ型 | 説明 |
---|---|---|
文字列 | CHAR | 固定長の文字列 |
LONG | 2ギガバイトまでの可変長文字列 | |
NCHAR | 固定長のUnicode文字列 | |
NVARCHAR2 | 可変長のUnicode文字列 | |
VARCHAR | VARCHAR2と同じ | |
VARCHAR2 | 可変長の文字列 | |
数値 | NUMBER | 数値 |
BINARY_FLOAT | 単精度浮動小数点数 | |
BINARY_DOUBLE | 倍精度浮動小数点数 | |
日付と時刻 | DATE | 日付と時刻 |
TIMESTAMP | 日付と時刻(ミリ秒) | |
INTERVAL YEAR TO MONTH | 2つの日付の差分 | |
INTERVAL DAY TO SECOND | 2つの日付と時刻の差分 | |
バイナリ | RAW | バイナリデータ |
LONG RAW | 可変長のバイナリデータ | |
ラージオブジェクト | CLOB | キャラクタ型ラージオブジェクト |
NCLOB | Unicodeキャラクタ型ラージオブジェクト | |
BLOB | バイナリ型ラージオブジェクト | |
その他 | ROWID | 行識別子 |
BFILE | データベース外のバイナリファイル |
なお、オラクルデータベースのSQLにBoolean型は存在しない。
CHARは固定長文字列を格納するデータ型です。
CHAR
CHAR(len)
CHAR(len BYTE)
CHAR(len CHAR)
文字列の長さを指定する。
len はバイト数での指定となる。
len は文字数での指定となる。
LONGは最大2ギガバイトまでの可変長文字列を格納するデータ型である。古いデータ型だが、後方互換性のため現在でも使える。LONGデータ型にはさまざまな制約があるため、新たに表を作る場合はLONG型の列を含めない方がよい。
LONGデータ型には次のような制約がある。
NCHARは固定長のUnicode長文字列を表すデータ型である。
NCHAR(len)
文字列の長さを文字数で指定する。
NVARCHAR2は可変長のUnicode文字列を表すデータ型である。NVARCHAR2のキャラクタセットはAL16UTF16又はUTF8のいずれかのみである。
NVARCHAR2(maxlen)
文字列の最大長を文字数で指定する。
VARCHAR2は可変長文字列を格納するデータ型である。
VARCHAR2(maxlen)
VARCHAR2(maxlen BYTE)
VARCHAR2(maxlen CHAR)
Oracle SQLでは、文字列リテラルの最大長は4,000バイトである。この制限により、VARCHAR2(4000 CHAR)に4,000バイトを超える文字列を指定してINSERTしようとすると、「ORA-01740: 文字列リテラルが長すぎます」のエラーが発生する。つまり、日本語などの2バイト文字では実際に4,000文字を格納できるわけではない。
精度とスケールが指定された数値を格納するデータ型です。
NUMBER
NUMBER(precision)
NUMBER(precision, scale)
NUMBER(5,2)
は 0 および 0.01 ~ 999.99 までの数値を扱える。
型 | 正の最小値 | 最大値 |
---|---|---|
NUMBER(5,-3) | 1000 | 99999000 |
NUMBER(5,-2) | 100 | 9999900 |
NUMBER(5,-1) | 10 | 999990 |
NUMBER(5,0) | 1 | 99999 |
NUMBER(5,1) | 0.1 | 9999.9 |
NUMBER(5,2) | 0.01 | 999.99 |
NUMBER(5,3) | 0.001 | 99.999 |
BINARY_FLOATは32ビットの浮動小数点数を格納するデータ型です。
BINARY_FLOAT
BINARY_DOUBLEは64ビットの浮動小数点数を格納するデータ型です。
BINARY_DOUBLE
日付と時刻を格納するデータ型で、西暦9999年12月31日までの日付を格納することができる。
書式はYYYY-MM-DD HH:MM:SS
である。
DATE
DATE型を検索条件に指定する。日時を表す文字列からDATE型を生成するには、TO_DATE関数を使う。
SELECT * FROM emp WHERE hiredate >= TO_DATE('2014/01/01 00:00:00', 'YYYY/MM/DD HH24:MI:SS')
DATE型を「YYYYMMDD」形式の文字列に変換する。DATE型から文字列に変換するには、TO_CHAR関数を使う。
SELECT TO_CHAR(hiredate, 'YYYYMMDD') FROM emp;
日付と時刻を格納するデータ型です。書式は
YYYY-MM-DD HH:MM:SS [FFFFFFFFF]
です。
TIMESTAMP[(fractional_seconds)] [WITH [LOCAL] TIMEZONE]
秒の小数点以下の桁数を fractional_seconds で指定することができます。指定できる範囲は、1 ≦ fractional_seconds ≦ 9 です。 fractional_seconds を省略した場合、6桁となります。
日付と時刻に加えてタイムゾーンに関する情報を含めるには、WITH TIMEZONEまたはWITH LOCAL TIMEZONEを指定します。
日付の差分(年と月)の差分を格納するデータ型です。
INTERVAL YEAR[(year_precision)] TO MONTH
精度を year_precision で指定することができます。指定できる範囲は、0 ≦ year_precision ≦ 9 です。 year_precision を省略した場合、精度は2桁となります。
日付と時刻の差分(日、時間、分、秒)を格納するデータ型です。
INTERVAL DAY[(day_precision)] TO SECOND[(fractional_seconds)]
日の精度を day_precision で指定することができます。指定できる範囲は、0 ≦ day_precision ≦ 9 です。 day_precision を省略した場合、精度は2桁となります。
秒の小数点以下の桁数を fractional_seconds で指定することができます。指定できる範囲は、0 ≦ fractional_seconds ≦ 9 です。 fractional_seconds を省略した場合、精度は6桁となります。
バイナリ・データを格納するデータ型です。
RAW[(size)]
可変長バイナリ・データを格納するデータ型です。
LONG RAW
最大サイズは2GBです。
キャラクタ・ラージ・オブジェクトを格納するデータ型です。
CLOB
最大サイズは、4GB -1 にデータベース・ブロックサイズを掛けた値です。
Unicodeキャラクタを含むキャラクタ・ラージ・オブジェクトを格納するデータ型です。
NCLOB
最大サイズは、4GB -1 にデータベース・ブロックサイズを掛けた値です。
バイナリ・ラージ・オブジェクトを格納するデータ型です。
BLOB
最大サイズは、4GB -1 にデータベース・ブロックサイズを掛けた値です。
索引構成表の論理アドレスを表すBASE64文字列を格納するデータ型です。
ROWID[(size)]
最大サイズを size で指定することができます。
データベース外に保存される大きなバイナリ・ファイルへのロケータを格納するデータ型です。
BFILE
最大サイズは4GBです。
テーブルの列のデータ型を確認するには、SQL*PlusのDESCRIBEコマンドを実行する。
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 |