SQL基本操作
安装并部署成功后,由于 DingoDB 与 MySQL 语义兼容,因此可以通过 SQL 工具或 MySQL 客户端连接 DingoDB 并执行 SQL 语句。
1.创建表格
参数描述
规范 |
描述 |
详情 |
语法 |
|---|---|---|---|
表名 |
表名 |
表名在数据库中必须是唯一的,并遵循命名约定。 |
表名 |
副本 |
副本数 |
表格的副本数。 |
Replica = {replica} |
自动增量 |
自动递增字段 |
指定字段为自递增列,目前只支持 |
自动增加 |
分区 |
Range 分区:按Range 分区; |
根据指定的范围将数据划分为不同的range。您可以根据一个或多个列的范围值进行分区。 |
|
哈希分区:按密钥的哈希值分区; |
按列或多列的哈希值进行分区,每个哈希值决定数据所属的分区。 |
||
引擎 |
存储引擎 |
创建表格时指定的存储引擎;Dingo 提供 LSM、BTree、Txn_LSM、Txn_BTree 存储引擎。默认值为 Txn_LSM |
Engine = Txn_LSM; |
索引 |
向量索引 |
为向量场创建索引,索引类型应指定为 |
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;