Skip to content

SQL記述形式

ここでは、SQLインターフェースで使用できるSQLの記述形式について示します。

使用できる操作

SELECT文の他、CREATE TABLE等のDDL(Data Definition Language、データ定義言語)やINSERT/DELETE文などをサポートしています。詳細はGridDBでサポートされるSQL文を参照して下さい。


データ型

データ格納に使用する型

SQLインターフェースでデータの格納に使用する型は次の通りです。この型名はテーブル作成時にカラム型として記述できます。

データ型内容詳細
BOOL型true/false
BYTE型-27から27-1 (8ビット)の整数値
SHORT型-215から215-1 (16ビット)の整数値
INTEGER型-231から231-1 (32ビット)の整数値
LONG型-263から263-1 (64ビット)の整数値
FLOAT型単精度型(32ビット) IEEE754で定められた浮動小数点数
DOUBLE型倍精度型(64ビット) IEEE754で定められた浮動小数点数
TIMESTAMP型日付と時刻の組
STRING型Unicodeコードポイントを文字とする、任意個数の文字の列
BLOB型画像や音声などのバイナリデータのためのデータ型
入力したままの形式で保存されるラージオブジェクト
文字xあるいはXをつけて、X'23AB'のような16進表現もできる

また、テーブルにNULL値を格納することができます。NULL値に対して“IS NULL”などの演算子を使用すると、SQL仕様に沿った結果を返却します。

テーブル作成時にカラム型として記述可能な表現

SQLインターフェースでは、テーブル作成時にカラム型として記述された型名について、データ格納に使用する型で列挙した型名と一致しなくても、ルールに従って解釈しデータの格納に使用する型を決定します。

以下のルールを上から順にチェックし、合致したルールによってデータ格納に使用する型を決定します。 ルールのチェック時には記述した型名およびルールでチェックする文字列の大文字小文字は区別しません。 複数のルールに合致した場合はより上にあるルールが優先されます。 どのルールにも当てはまらない場合はエラーとなりテーブル作成に失敗します。

ルールNo.テーブル作成時にカラム型として記述した識別子作成するテーブルのカラム型
1データ格納に使用する型に列挙した型名テーブル作成時に指定された型に従う
2REALDOUBLE型
3TINYINTBYTE型
4SMALLINTSHORT型
5BIGINTLONG型
6INTを含む型名INTEGER型
7CHAR, CLOB, TEXTのいずれかを含む型名STRING型
8BLOBを含む型名BLOB型
9REAL, DOUBのいずれかを含む型名DOUBLE型
10FLOAを含む型名FLOAT型

上記ルールによるデータ型決定の例を示します。

  • 記述した型名が"BIGINTEGER"→INTEGER型(ルール6)
  • 記述した型名が"LONG"→LONG型(ルール1)
  • 記述した型名が"TINYINT"→BYTE型(ルール3)
  • 記述した型名が"FLOAT"→FLOAT型(ルール1)
  • 記述した型名が"VARCHAR"→STRING型(ルール7)
  • 記述した型名が"CHARINT"→INTEGER型(ルール6)
  • 記述した型名が"BIGBLOB"→BLOB型(ルール8)
  • 記述した型名が"FLOATDOUB"→DOUBLE型(ルール9)
  • 記述した型名が"INTREAL"→INTEGER型(ルール6)
  • 記述した型名が"FLOATINGPOINT"→INTEGER型(ルール6)
  • 記述した型名が"DECIMAL"→エラー

NoSQLインターフェースのクライアントにおけるデータ型と同等の型をSQLインターフェイスで使用する場合は、以下のように記述してください。ただし、一部同等の型が存在せず、使用できないものがあります。

NoSQLインターフェースのデータ型同等の型となるSQLインターフェースのカラム型記述
STRING(文字列型)STRING または STRING型となる表現
BOOL(ブール型)BOOL
BYTE(8ビット整数型)BYTE または BYTE型となる表現
SHORT(16ビット整数型)SHORT または SHORT型となる表現
INTEGER(32ビット整数型)INTEGER または INTEGER型となる表現
LONG(64ビット整数型)LONG または LONG型となる表現
FLOAT(32ビット単精度浮動小数点数型)FLOAT または FLOAT型となる表現
DOUBLE(64ビット倍精度浮動小数点数型)DOUBLE または DOUBLE型となる表現
TIMESTAMP(時刻型)TIMESTAMP
GEOMETRY(空間型)テーブル作成時のカラム型には指定できません
BLOB型BLOB または BLOB型となる表現
配列型テーブル作成時のカラム型には指定できません

コンテナをテーブルとしてアクセスするときのデータ型と値の扱い

NoSQLインターフェースのクライアントで作成したコンテナを、SQLインターフェースでアクセスする場合のコンテナのカラム型および値の扱いを以下に示します。

コンテナのカラム型SQLにマッピングされるデータ型
STRING型STRING型元の値と同一
BOOL型BOOL型元の値と同一
BYTE型BYTE型元の値と同一
SHORT型SHORT型元の値と同一
INTEGER型INTEGER型元の値と同一
LONG型LONG型元の値と同一
FLOAT型FLOAT型元の値と同一
DOUBLE型DOUBLE型元の値と同一
TIMESTAMP型TIMESTAMP型元の値と同一
GEOMETRY型NULL定数と同等の型(Types.UNKNOWN)全ての値がNULL
BLOB型BLOB型元の値と同一
配列型NULL定数と同等の型(Types.UNKNOWN)全ての値がNULL

SQLでサポートしていないデータ型の扱い

NoSQLインタフェースでサポートしているが、SQLインタフェースではサポートしていないデータ型は次の通りです。

  • GEOMETRY型
  • 配列型

これらのデータ型のデータに対して、SQLインタフェースでアクセスした場合の扱いについて説明します。

  • テーブル作成 CREATE TABLE

    • テーブル作成時のカラムのデータ型として、これらのデータ型は指定できません。エラーになります。
  • テーブル削除 DROP TABLE

    • 削除対象テーブルがこれらのデータ型のカラムを持っていても、テーブル削除はできます。
  • 登録/更新/削除 INSERT/UPDATE/DELETE

    • これらのデータ型のカラムを持つテーブルに対しては、INSERT/UPDATE/DELETEはエラーになります。

    • これらのデータ型のカラムの値は指定せずに、サポート範囲のデータ型のカラムの値だけ指定しても、ロウを登録・更新することはできません。

      // NoSQLインタフェースを用いて作成したテーブル
       名前  : sample1
       カラム: id INTEGER型
                value DOUBLE型
                geometry GEOMETRY型
      
      // INTEGER型とDOUBLE型のカラムのみ指定してロウの登録 →テーブルにGEOMETRY型のカラムがあるので、エラーが発生する
      INSERT INTO sample1 (id, value) VALUES (1, 192.3)
  • 検索 SELECT

    • これらのデータ型のカラムを持つテーブルを検索すると、そのカラムの値は常にNULLが返ります。
  • 索引作成/削除 CREATE INDEX/DROP INDEX

    • GEOMETRY型カラムへの索引作成・削除は可能です。
    • 配列型カラムへの索引作成・削除はできません。エラーになります。(NoSQLインタフェースでも、配列型カラムへの索引作成・削除は未サポートです)

ネーミングの規則

ネーミングの規則は次の通りです。

  • データベース名・テーブル名・ビュー名・列名・索引名および一般ユーザ名は、1文字以上のASCII英数字ならびにアンダースコア「_」、ハイフン「-」、ドット「.」、スラッシュ「/」、イコール「=」の列で構成されます。
  • テーブル名にはノードアフィニティ機能向けに「@」の文字も指定できます。

メモ

  • 名前にASCII英数字とアンダースコア以外の文字を含む、または、先頭文字が数字のテーブルやカラムなどをSQL文に記述する場合は、引用符"で囲んでください。
SELECT "column.a1" FROM "Table-5"