跳到主要内容

创建数组列

seekdb 支持使用 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(ARRAY(INT)));
CREATE TABLE t4(c1 INT[][]);

最多支持 6 层数组嵌套,示例如下:

CREATE TABLE t5 (c1 INT[][][][][][]);

DESC t5;
+-------+-----------------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------------------------------------+------+-----+---------+-------+
| c1 | ARRAY(ARRAY(ARRAY(ARRAY(ARRAY(ARRAY(INT)))))) | YES | | NULL | |
+-------+-----------------------------------------------+------+-----+---------+-------+
1 row in set (0.002 sec)

写入和查询数组数据示例如下。

创建测试表 t6:

CREATE TABLE t6(
c1 ARRAY(INT),
c2 ARRAY(VARCHAR(256)),
c3 ARRAY(BIGINT)
);

返回结果如下:

DESC t6;
+-------+---------------------+------+------+---------+-------+
| 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 (0.002 sec)

插入数据:

// 使用数组函数构造数组对象
INSERT INTO t6 VALUES (ARRAY(1,2), ARRAY(1,2), ARRAY(1,2));
// 使用[]构造数组对象
INSERT INTO t6 VALUES ([1,2], [1,2], [1,2]);
// 使用格式化的字符串写入数组数据
INSERT INTO t6 VALUES ("[1,2]", "[1,2]", "[1,2]");

查询测试表,结果如下:

SELECT * FROM t6;
+-------+-----------+-------+
| 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 (0.002 sec)