# mtopt-db **Repository Path**: mtopt/mtopt-db ## Basic Information - **Project Name**: mtopt-db - **Description**: SQL/NOSQL混合数据库系统 - **Primary Language**: 其他 - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: http://www.mtopt.com - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2024-04-16 - **Last Updated**: 2025-09-09 ## Categories & Tags **Categories**: database-service **Tags**: 自主研发, 数据库系统, 仓颉语言 ## README ### 1. 设计理念 - MTOPT DB是一款支持结构化查询语言,包含关系化/字典服务多模式,基于国产仓颉,兼容LINUX/Windows的轻量级数据库。 ### 2. 使用方法 - **查询工具** :mtopt db webui ### 3. 指令语句 - **结构:[命令] [对象] [对象名称] [描述…] { [子命令…]; }; (命令以;号收尾为标识,可指定一个或多个子命令)** - **命令:指定命令主要功能的标记,有以下类型。** - add(新增):作用于table,index,dict,search,tabledata,dictdata,searchdata对象操作。 - upd(修改):作用于table,dict,search,tabledata,dictdata,searchdata对象操作。 - del(删除):作用于table,dict,search,index,tabledata,dictdata,searchdata对象操作。 - query(查询):作用于table,dict,search,index,tabledata,dictdata,searchdata对象操作。 - rename(改名):作用于table,dict,search,index对象操作。 - manage(管理):作用于storage,auth对象操作 - **对象:指定命令主要操作对象类型,有以下类型** - storage(存储) - auth(授权) - table(表) - tablecolumn(表列) - tabledata(表数据) - tableindex(索引) - tableindexcolumn(索引列) - dict(字典) - dictdata(字典数据) - search(检索) - searchdata(检索数据) - **描述:指定命令的行为描述方法类型。** - **set(设定)** - **作用域** : - add storage命令。 - rename storage命令。 - add table子命令。 - upd table子命令。 - rename table命令。 - add tableindex 子命令。 - rename tableindex命令。 - add tabledata 子命令。 - upd tabledata命令。 - add dict 命令。 - upd dict 命令。 - upd dictdata 命令。 - del dictdata 命令。 - manage storage 命令。 - manage auth 命令。 - **where(条件)** : - **作用域** - query命令。 - upd tabledata命令。 - del tabledata命令。 - upd dictdata 命令。 - del dictdata 命令。 - **group(分组展示)** : - **作用域** - query tabledata命令。 - **函数** - avg(平均值) - max(最大值) - min(最小值) - sum(累计值) - count(累计数) - **说明** :与grid/total互斥,group支持函数 - **grid(表格展示)** : - **作用域** - query tabledata命令。 - query dictdata 命令。 - query searchdata 命令。 - **说明** :与group/total说明互斥。 - **total(数量展示)** : - **作用域** - query tabledata命令。 - query dictdata 命令。 - query searchdata 命令。 - **说明** :与group/grid说明互斥。 - **order(排序)** : - **作用域** - query命令 - **说明** :(order [列名] ASC升序 或 DESC降序)。 - **limit(分页)** : - **作用域** :query命令。 - **说明** :(limit 页数,数量)。 - **子命令:子命令语法结构与命令相同,语句以;号收尾。** - **运算符:作用与所有命令语法构成的符号标识。** - ==(等于):作用与where描述方法。 - !=(不等于):作用与where描述方法。 - ~=(包含):作用与where描述方法。 - \>(大于):作用与where描述方法。 - <(小于):作用与where描述方法。 - \>=(大于等于)作用与where描述方法。 - <=(小于等于):作用与where描述方法。 - &(与):作用与where描述方法。 - |(或):作用与where描述方法。 - ,(分隔符):作用与grid,total,group,set,order,limit描述方法。 - =(赋值 或 取值):作用与set,grid,group描述方法。 - ‘’(数值括号):作用与grid,group,set,where描述方法。 - ()(运算括号):作用与where描述方法,与group描述方法函数。 - [](对象括号):作用与命令对象名与grid,total,group,set,where,order说明。 - {}(语句括号):作用与命令子语句。 - ;(语句结束符):作用与单条语句与单条子语句结束。 - @:xxx;(字符转义):作用与grid,group,set,where设定数值内,由三位长度十进制ASCII编码组成。 ### 4. 操作对象 - **存储** - **规则** :名称由大小写字母数字和下划线组成,名称不可重复,存储只能被单个服务实例访问,可包含多个表与多个字典。 - **附加命令** :manage storage [add] set [name]=’存储名称’,[path]=’存储路径’; - **移除命令** :manage storage [del] set [name]=’存储名称’; - **备份命令** :manage storage [backup] set [name]=’存储名称’,[path]=’目标路径’,[mode]=’copy 或 compress’; - **还原命令** :manage storage [restore] set [name]=’存储名称’,[path]=’来源路径’; - **查询命令** :manage storage [query]; - **授权** - **规则** :授权为字符串结构,由大小写字母数字和下划线组成,可以作用与多个存储。 - **调整命令** :manage auth [add] set [key]=’授权’,[method] = ‘方法范围’,[range]=’存储范围’; - **移除命令** :manage auth [del] set [key]=’授权’; - **查询命令** :manage auth [query]; - **表** - **规则** :名称由大小写字母数字和下划线组成,名称不可重复,包含数个数据列,可包含一个唯一索引,可包含数个非唯一索引。 - **数据类型** - Integer:长度为8字节的整数类型。 - Float:长度为8字节的浮点类型。 - Decimal:无限长度精度的数字类型。 - Char:固定长度的ASCII字符串。 - Text:无限长度的UTF-8字符串。 - DateTime:长度为8字节的包含日期与时间的时间。 - **新增命令** :add table [表名] { add [列名] set [datatype] = '数据类型',[datalength] ='数据长度',[default] =‘默认值’; }; - **修改命令** :upd table [表名] { add [列名] set [datatype] = '数据类型',[datalength] = '数据长度' [default]= ‘默认值’; upd [列名] set [source]= ‘旧列名’,[datatype]='数据类型',[datalength]='数据长度' ,[default]= ‘’默认值; }; - **改名命令** :rename table [表名] set [name] ='新的表名'; - **删除命令** :del table [表名]; - **查询命令** :query table where [列] == ‘’ order [列1] ASC,[列2] DESC limit 0,100; - **表索引** - **规则** :必须依赖已存在的表,名称由大小写字母数字和下划线组成,名称不可重复,可索引数个不重复的表列,列数据类型为Text,Decimal的列不可被索引。 - **新增命令** :add tableindex [索引名] set [table]=‘关联表名’,[volume]=’索引树阶数,最低为容量不得低于3,建议128,’,[unique]=‘是为唯一索引true或false’ { add [表列名]; }; - **改名命令** :rename tableindex [索引名] set [name]='新索引名'; - **删除命令** :del tableindex [索引名]; - **查询命令** :query tableindex where [列] == ‘’ order [列1] ASC,[列2] DESC limit 0,100; - **表索引列** - **查询命令** :query tableindexcolumn [索引名] where [列] == ‘’ order [列1] ASC,[列2] DESC limit 0,100; - **表列** - **查询命令** :query tablecolumn [表名] where [列] == ‘’ order [列1] ASC,[列2] DESC limit 0,100; - **表数据** - **新增命令** :add tabledata [表名] { add set [列名1]='1',[列名2]='2'; }; - **修改命令** :upd tabledata [表名] set [列名1]='',[列名2]='' where [列名1]=='条件1'; - **删除命令** :del tabledata [表名] where [列名1]=='条件1'; - **部分查询命令** :query tabledata [表名] grid ‘名称’=[列名] where [列名]=='条件' order [列名] asc limit 0,100; - **全部查询命令** :query tabledata [表名] grid * order [列名] asc limit 0,100; - **数量查询命令** :query tabledata [表名] total * where [列名] ==’条件’; - **分组查询命令** :query tabledata [表名] group ‘名称’=[列名],’名称2’=count([列名]) where [列名]=='条件' order [列名] asc limit 0,100; - **字典** - **规则** :名称由大小写字母数字和下划线组成,名称不可重复。 - **数据列** - key:格式为ASCII字符,不限数据长度 - value:格式为UTF-8字符,不限数据长度 - **新增命令** :add dict [字典名]; - **改名命令** :rename dict [字典名] set [name] = ’新字典名’; - **删除命令** :del dict [字典名]; - **查询命令** :query dict where [列] == ‘’ order [列1] ASC,[列2] DESC limit 0,100; - **字典数据** - **新增命令** :add dictdata [字典名] { add set [列名1]='1',[列名2]='2'; }; - **修改命令** :upd dictdata [字典名] set [value] = ‘值’ where [列名]=='条件'; - **删除命令** :del dictdata [字典名] where [列名]=='条件'; - **部分查询命令** :query dictdata [字典名] grid ‘名称’=[列名] where[列名]=='条件' order [列名] asc limit 0,100; - **全部查询命令** :query dictdata [字典名] grid * order [列名] asc limit 0,100; - **数量查询命令** :query dictdata [字典名] total * where [列名] ==’条件’;