ヘッダーをスキップ

Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド リリース6.0 B25770-01 |
| 目次 | 索引

前へ | 次へ |

## データ型の仕様

TimesTenでは次のデータ型がサポートされます。

データ型 | 説明 | 例
--- | --- | ---
英数字 |  |
CHAR[ACTER][(n)] | n バイトの固定長文字列で、n には1から8300までの整数を指定します。デフォルトのサイズはCHAR(1)です。キーワードCHARはCHARACTERのシノニムです。空の領域には空白が埋め込まれます。 |
    CREATE TABLE SAMPLE (col1
    CHAR, col2 CHARACTER, col3
    CHAR(10));
最初の2列にはそれぞれ1文字が保存され、列3には10文字の文字列が保存されます。
VARCHAR(n) | nバイト以下の可変長の文字列。nには1から4194304（222）までの整数を指定します。 |
    CREATE TABLE sample (col1
    VARCHAR(100));
この列には、最大100文字が保存されます。
NCHAR[(n)] | n×2バイトのUnicode文字の固定長文字列です。nは1から4150までの整数である必要があります。デフォルトのサイズはNCHAR(1)です。NCHARデータ型は、Unicodeの空白文字U+0020 SPACEを使用して指定した長さまで調整されます。キーワードNATIONAL CHARACTERとNATIONAL CHARはNCHARのシノニムです。 |
    CREATE TABLE SAMPLE (COL1
    NCHAR, COL2 NATIONAL
    CHARACTER,
    COL3 NCHAR(10));
最初の2列には、それぞれ単一のUnicode文字が保存されます。列3には、10文字のUnicode文字が保存されます。
NVARCHAR(n) | n×2バイト以下のUnicode文字の可変長文字列です。nは1から2,097,152（221）までの整数である必要があります。キーワードNATIONAL CHARACTER VARYING、NATIONAL CHAR VARYING、NCHAR VARYING は、NVARCHARのシノニムです。 |
    CREATE TABLE SAMPLE (COL1
    NVARCHAR(100));
この列には、最大100文字のUnicode文字が保存されます。
数値 |  |
DOUBLE [PRECISION], FLOAT [(53)] | 長い（64ビット）浮動小数点数です。指数と小数部から成る近似値です。サポートされるFLOAT(53)の最大値は1.7E+308以上で、最小値は-1.7E+308以下です。DOUBLEの値を指定するには、指数またはE表記法を使用します。DOUBLEは、FLOAT(53)のシノニムです。FLOATの精度を指定しない場合のデフォルト値は53です。 |
    CREATE TABLE sample(col1
    DOUBLE, col2 DOUBLE
    PRECISION, col3 FLOAT, col4
    FLOAT(53));
4つの列はすべて同じデータ型です。
REAL FLOAT (24) | 短い（32ビット）浮動小数点数。これは指数と小数部から成る近似値です。サポートされるFLOAT(24)の最大値は3.4E+38以上で、最小値は-3.4E+38以下です。指数またはE表記法を使用してREALの値を指定することができます。REALはFLOAT(24)のシノニムです。FLOATの精度を指定しない場合のデフォルト値は53です。 |
    CREATE TABLE sample(col1
    REAL, col2 FLOAT(24));
2つの列のデータ型は同じです。
DEC[IMAL][(p[,s])], NUMERIC[(p[,s])] | 固定の最大精度（総桁数）とスケール（小数点の右側の桁数）を定義した正確な数値。精度pには1から40を指定します。スケールには0からpを指定します。精度のデフォルト値は40、スケールのデフォルト値は0です。 DECとNUMERICはDECIMALのシノニムです。 |
    CREATE TABLE sample(col1
    DECIMAL(5,3), col2 DEC(12,6),
    col3 NUMERIC(7,2));
INT[EGER] | -2,147,483,648（-231）から2,147,483,647（231-1）の範囲の符号付き整数。INTはINTEGERのシノニムです。 |
    CREATE TABLE sample (col1
    int, col2 INTEGER)
SMALLINT | -32,768（-215）から32,767（215-1）の範囲の符号付き整数。 |
    CREATE TABLE sample (col1
    SMALLINT)
TINYINT | 0から255（28-1）の範囲の符号なし整数。 |
    CREATE TABLE sample (col1
    TINYINT)
BIGINT | -9,223,372,036,854,775,807（-263）から9,223,372,036,854,775,807（263 - 1）の範囲の符号付き8バイト整数。 |
    CREATE TABLE sample (col1
    BIGINT);
    INSERT INTO sample
    VALUES(123456789012345678);
BINARY(n) | nバイトの固定長バイナリの値。nには1から8300までの整数を指定します。 |
    CREATE TABLE sample (col1
    BINARY(10))
VARBINARY(n) | nバイト以下の可変長のバイナリの値。nには1から4194304（222）までの整数を指定します。 |
    CREATE TABLE sample (col1
    VARBINARY(100))
DATE | 1753-01-01（1753年1月1日）から9999-12-31（9999年12月31日）の間の日付。書式はYYYY-MM-DDです。 |
    CREATE TABLE sample (col1
    DATE)
    INSERT INTO SAMPLE VALUES
    (DATE '1998-10-28');
TIME | 00:00:00（午前0時）から23:59:59（午後11時59分59秒）の間の時刻。 |
    CREATE TABLE sample (col1
    TIME)
    INSERT INTO SAMPLE VALUES
    (TIME '12:00:00');
TIMESTAMP | 1753-01-01 00:00:00（1753年1月1日の午前0時）から9999-12-31 23: 59:59（9999年12月31日の午後11時59分59秒）の間の日付と時刻。マイクロ秒に満たない端数は、「Data truncated」エラーになります。書式は、YYYY-MM-DD:HH:MI:SS.FFFFFFです。 |
    CREATE TABLE sample (col1
    TIMESTAMP)
    INSERT INTO SAMPLE VALUES
    (TIMESTAMP
    '1998-10-28 12:00:00');
INTERVAL [+/-] IntervalQualifier | TimesTenはINTERVAL型を部分的にサポートします。INTERVAL型は、型INTERVALとIntervalQualifierで表現されます。IntervalQualifierには、精度を持たない単一のフィールド型のみを指定できます。デフォルトの先行精度は、すべてのINTERVAL型で8桁です。単一のフィールド型は、YEAR、MONTH、DAY、HOUR、MINUTE、SECONDのいずれかです。現在、INTERVAL型は定数でのみ指定できます。 |
    SELECT * FROM t1 WHERE
    SYSDATE-t1.CREATETIME =
    INTERVAL '3' MONTH;

選択するデータ型によって、次の内容を考慮する必要があります。

### 式で使用する値

一部の処理は、特定のデータ型を持つデータでのみ実行できます。たとえば、算術演算はINTEGER、SMALLINT、TINYINT、BIGINT、DOUBLE、INTERVALなどの数値データ型でのみ実行できます。同様に、SUMやAVGも数値データ型に対してのみ実行できます。LIKE条件によるパターン一致は、CHAR、VARCHAR、NCHAR、NVARCHAR型の英数字データでのみ実行できます。

### 異なるデータ型を結合する処理の結果

型は異なっても、互換性のあるデータを結合する比較や式を評価すると、小さいデータ型から大きいデータ型へ型変換されます。

### ストレージのオーバーヘッド

固定長のCHAR、NCHAR、BINARYデータ型は、その列の最大長まで調整されますが、可変長のVARCHAR、NVARCHAR、VARBINARYデータ型は調整されません。可変長のデータ型には、固定長にはないストレージのオーバーヘッドが追加で少しあります。デフォルトでは、宣言された列の長さが128バイトよりも長い可変長の列は、表外に格納されます。宣言された列の長さが128バイト以下の可変長の列は、表内に格納されます。

それぞれのデータ型の記憶域の要件は、次のとおりです。

データ型 | 必要な記憶域
--- | ---
CHAR (n) | nバイト。
VARCHAR (n) | NOT INLINE列の場合: 32ビット・プラットフォームでは、列の長さ+ 20バイト（最低36バイト）。 64ビット・プラットフォームでは、列の長さ+ 40バイト（最低64バイト）。 INLINE列の場合: 32ビット・プラットフォームでは、n + 4バイト。 64ビット・プラットフォームでは、n + 8バイト。
NCHAR(n) | 2×nバイト。
NVARCHAR(n) | NOT INLINE列の場合: 32ビット・プラットフォームでは、2×（列の長さ）+ 20バイト（最低36バイト）。 64ビット・プラットフォームでは、2×（列の長さ）+ 40バイト（最低64バイト）。 INLINE列の場合: 32ビット・プラットフォームでは、2×（列の長さ）+ 4バイト。 64ビット・プラットフォームでは、2×（列の長さ）+ 8バイト。
DOUBLE FLOAT (53) FLOAT | 8バイト。
REAL FLOAT (24) | 4バイト。
DECIMAL(p,s) NUMERIC (p,s) | およそp/2バイト。
INTEGER | 4バイト。
SMALLINT | 2バイト。
TINYINT | 1バイト。
BIGINT | 8バイト。
DATE | 4バイト。
TIME | 8バイト。
TIMESTAMP | 8バイト。
BINARY (n) | nバイト。
VARBINARY (n) | NOT INLINE列の場合: 32ビット・プラットフォームでは、値の長さ+ 20バイト（最低36バイト）。 64ビット・プラットフォームでは、値の長さ+ 40バイト（最低64バイト）。 INLINE列の場合: 32ビット・プラットフォームでは、値の長さ+ 4バイト。 64ビット・プラットフォームでは、値の長さ+ 8バイト。
INTERVAL | TimesTenでは、INTERVALを格納することはできません。