OceanBaseデータベースでは、CREATE TABLE を使用して配列列を作成できます。
注意点
配列型はデフォルト値の設定をサポートしていません。
サポートされている配列型については、配列要素型の概要を参照してください。
例
CREATE TABLE ステートメントを使用して、配列列を持つテーブルを作成します。構文例は以下のとおりです:
CREATE TABLE t1(
c1 ARRAY(INT),
c2 ARRAY(VARCHAR(256)),
c3 ARRAY(BIGINT),
c4 ARRAY(TINYINT),
c5 ARRAY(FLOAT),
c6 ARRAY(DOUBLE),
c7 ARRAY(SMALLINT));
CREATE TABLE t2(
c1 INT[],
c2 VARCHAR(256)[],
c3 BIGINT[],
c4 TINYINT[],
c5 FLOAT[],
c6 DOUBLE[],
c7 SMALLINT[]);
CREATE TABLE t3(
c1 ARRAY<INT>,
c2 ARRAY<VARCHAR(256)>,
c3 ARRAY<BIGINT>,
c4 ARRAY<TINYINT>,
c5 ARRAY<FLOAT>,
c6 ARRAY<DOUBLE>,
c7 ARRAY<SMALLINT>);
ネスト配列の定義例は以下のとおりです:
CREATE TABLE t4(c1 ARRAY(ARRAY(INT)));
CREATE TABLE t5(c1 INT[][]);
CREATE TABLE t6(c1 ARRAY<ARRAY<INT>>);
最大で6層の配列ネストがサポートされます。例は以下のとおりです:
CREATE TABLE t7 (c1 INT[][][][][][]);
DESC t7;
+-------+-----------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------------------------------------+------+-----+---------+-------+
| c1 | ARRAY(ARRAY(ARRAY(ARRAY(ARRAY(ARRAY(INT)))))) | YES | | NULL | |
+-------+-----------------------------------------------+------+-----+---------+-------+
1 row in set
配列データの書き込みとクエリの例は以下のとおりです。
テストテーブル t8 を作成します:
obclient> CREATE TABLE t8(
c1 ARRAY(INT),
c2 ARRAY(VARCHAR(256)),
c3 ARRAY(BIGINT)
);
実行結果は次のとおりです:
obclient> DESC t8;
+-------+---------------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+------+---------+-------+
| c1 | ARRAY(INT) | YES | | NULL | |
| c2 | ARRAY(VARCHAR(256)) | YES | | NULL | |
| c3 | ARRAY(BIGINT) | YES | | NULL | |
+-------+---------------------+------+------+---------+-------+
3 rows in set
データを挿入します:
// 配列関数を使用して配列オブジェクトを構築する
obclient> INSERT INTO t8 VALUES (ARRAY(1,2), ARRAY(1,2), ARRAY(1,2));
// [] を使用して配列オブジェクトを構築する
obclient> INSERT INTO t8 VALUES ([1,2], [1,2], [1,2]);
// フォーマット文字列を使用して配列データを書き込む
obclient> INSERT INTO t8 VALUES ("[1,2]", "[1,2]", "[1,2]")
テストテーブルをクエリした結果は次のとおりです:
obclient> SELECT * FROM t8;
+-------+-----------+-------+
| c1 | c2 | c3 |
+-------+-----------+-------+
| [1,2] | ["1","2"] | [1,2] |
| [1,2] | ["1","2"] | [1,2] |
| [1,2] | ["1","2"] | [1,2] |
+-------+-----------+-------+
3 rows in set