SQL基本操作

安装并部署成功后,由于 DingoDB 与 MySQL 语义兼容,因此可以通过 SQL 工具或 MySQL 客户端连接 DingoDB 并执行 SQL 语句。

1.创建表格

参数描述

规范

描述

详情

语法

表名

表名

表名在数据库中必须是唯一的,并遵循命名约定。

表名

副本

副本数

表格的副本数。

Replica = {replica}

自动增量

自动递增字段

指定字段为自递增列,目前只支持 int 类型,可以设置初始自增值。

自动增加

分区

Range 分区:按Range 分区;

根据指定的范围将数据划分为不同的range。您可以根据一个或多个列的范围值进行分区。

哈希分区:按密钥的哈希值分区;

按列或多列的哈希值进行分区,每个哈希值决定数据所属的分区。

引擎

存储引擎

创建表格时指定的存储引擎;Dingo 提供 LSM、BTree、Txn_LSM、Txn_BTree 存储引擎。默认值为 Txn_LSM

Engine = Txn_LSM;

索引

向量索引

为向量场创建索引,索引类型应指定为 VECTOR

INDEX[index_name ]VECTOR( {index_parameters} )

标量索引

在标量字段上创建索引,默认索引类型为标量,“Scalar ”为可选项。

SQL 示例

  • 创建带有标量索引的表

CREATE TABLE saltable (
    id int,
    name varchar(32),
    age int,
    gmt bigint,
    price float,
    birthday date,
    create_time time,
    update_time timestamp,
    zip_code varchar(20),
    is_delete boolean,
    index name_index (name), //scalar index
    PRIMARY KEY (id)
);
  • 创建带向量索引的表

CREATE TABLE vectable (
    id bigint not null, 
    name varchar(32),
    age int,
    amount double,
    birthday date,
    feature float array not null, //vector column
    feature_id bigint not null,
    index feature_index vector(feature_id, feature) parameters(type=hnsw, metricType=L2, dimension=8, efConstruction=40, nlinks=32),//vector index
    PRIMARY KEY(id)
);

说明:

创建语句中的特征列为向量列,类型为浮点数组,向量列后需要添加向量索引,如果不添加向量索引将被视为普通数组类型,向量索引中标量索引的定义类似于使用 VECTOR 方法的相应定义,需要的参数有两个,一个是向量 id 列,目前只支持整数.目前只支持浮点数组。

2.插入数据

  • 以 “vectable ”为例,由于向量字段的维数指定为 8,因此插入时数组需要包含 8 个元素。

INSERT INTO vectable VALUES
(1,'Alice',15,98.50,'1995-01-01',array[0.19151945412158966, 0.6221087574958801, 0.43772774934768677, 0.7853586077690125, 0.7799758315086365, 0.10310444235801697, 0.8023741841316223, 0.9455532431602478],1),
(2,'Ben',15,99.00,'1995-03-15',array[0.3833174407482147, 0.053873684257268906, 0.45164841413497925, 0.9820047616958618, 0.12394270300865173,0.2764642536640167, 0.801872193813324, 0.9581393599510193],2),
(3,'Joy',15,100.00,'1996-11-12',array[0.07534254342317581, 0.055006396025419235, 0.32319480180740356, 0.5904818177223206, 0.8538985848426819,0.5524689555168152, 0.2730432450771332, 0.9744951128959656],3),
(4,'Jason',17,97.45,'1994-05-11',array[0.17446526885032654, 0.7370864748954773, 0.1270293891429901, 0.36964988708496094, 0.6043339967727661, 0.35782694816589355, 0.2128199338912964, 0.22331921756267548],4),
(5,'Lily',16,99.50,'1997-05-19',array[0.18726634979248047, 0.797411322593689, 0.6123674511909485, 0.5556533932685852, 0.6294915676116943, 0.686180055141449, 0.24038253724575043,0.038164183497428894],5);

3.查询数据

  • 全表查询

SELECT * FROM vectable.
  • 条件查询,使用 WHERE 条件语句有条件地过滤数据。

SELECT * FROM Vectable WHERE name='Ben';

4.修改数据

  • 使用 “UPDATE TABLE ”语句修改表中的数据

UPDATE vectable SET amount=95 WHERE id = 3; ```sql

5.删除表

  • 使用 DROP TABLE 语句删除表。

DROP TABLE vectable;