OceanBaseデータベースでは、CREATE TABLE を使用してマッピング列を作成できます。
注意事項
- デフォルト値の設定はサポートされていません。
- サポートされるマッピングタイプとその説明、制限については、マッピング要素タイプの概要を参照してください。
例
CREATE TABLE ステートメントを使用して、マッピング列を持つテーブルを作成します。構文の例は以下のとおりです:
CREATE TABLE t1 (
id INT,
c1 MAP(INT, FLOAT),
c2 MAP(VARCHAR(10), VARCHAR(2)),
c3 MAP(FLOAT UNSIGNED, ARRAY(INT)),
c4 MAP(VARCHAR(3), ARRAY(ARRAY(VARCHAR(20))))
);
Value型をネスト配列とするマッピングタイプを定義する例は以下のとおりです:
CREATE TABLE t2(c1 MAP(INT, ARRAY(INT)));
CREATE TABLE t3(c1 MAP(INT, INT[][]));
Valueは最大で6層のマッピングネスト(MAP自体を含む)をサポートします。例は以下のとおりです:
CREATE TABLE t4 (c1 MAP(INT, INT[][][][][]));
DESC t4;
+-------+-------------------------------------------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------------------------------------------+------+------+---------+-------+
| c1 | MAP(INT,ARRAY(ARRAY(ARRAY(ARRAY(ARRAY(INT)))))) | YES | | NULL | |
+-------+-------------------------------------------------+------+------+---------+-------+
1 row in set
マッピングデータの書き込みとクエリの例は以下のとおりです。
テストテーブルt5を作成します:
obclient> CREATE TABLE t5(
c1 MAP(INT, INT),
c2 MAP(VARCHAR(256), VARCHAR(256)),
c3 MAP(BIGINT, BIGINT)
);
実行結果は次のとおりです:
obclient> DESC t5;
+-------+--------------------------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------------------------+------+------+---------+-------+
| c1 | MAP(INT,INT) | YES | | NULL | |
| c2 | MAP(VARCHAR(256),VARCHAR(256)) | YES | | NULL | |
| c3 | MAP(BIGINT,BIGINT) | YES | | NULL | |
+-------+--------------------------------+------+------+---------+-------+
3 rows in set
データを挿入します:
obclient> INSERT INTO t5 VALUES (MAP(1,2), MAP(1,2), MAP(1,2));
テストテーブルをクエリします。結果は次のとおりです:
obclient> SELECT * FROM t5;
+-------+-----------+-------+
| c1 | c2 | c3 |
+-------+-----------+-------+
| {1:2} | {"1":"2"} | {1:2} |
+-------+-----------+-------+
1 row in set