# mtopt-db **Repository Path**: mtopt/mtopt-db ## Basic Information - **Project Name**: mtopt-db - **Description**: SQL/NOSQL混合数据库系统 - **Primary Language**: C# - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-13 - **Last Updated**: 2025-11-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 自主研发, 数据库系统 ## README ### 1. 设计理念 - MTOPT DB是一款支持结构化查询语言,包含关系化/字典服务多模式,兼容LINUX/Windows的轻量级数据库。 ### 2. 使用方法 * **查询工具** :mtopt db webui ### 3. 指令语句 * **结构:\[命令] \[对象] \[对象名称] \[描述…] { \[子命令…]; }; (命令以;号收尾为标识,可指定一个或多个子命令)** * **命令:指定命令主要功能的标记,有以下类型。** * add(新增):作用于table,index,dict,tabledata,dictdata对象操作。 * upd(修改):作用于table,dict,tabledata,dictdata对象操作。 * del(删除):作用于table,dict,index,tabledata,dictdata对象操作。 * query(查询):作用于table,dict,index,tabledata,dictdata对象操作。 * rename(改名):作用于table,dict,index对象操作。 * manage(管理):作用于storage,auth对象操作 * **对象:指定命令主要操作对象类型,有以下类型** * storage(存储) * auth(授权) * table(表) * tablecolumn(表列) * tabledata(表数据) * tableindex(索引) * tableindexcolumn(索引列) * dict(字典) * dictdata(字典数据) * **描述:指定命令的行为描述方法类型。** * **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 命令。 * **说明** :与group/total说明互斥。 * **total(数量展示)** : * **作用域** * query tabledata命令。 * query dictdata 命令。 * **说明** :与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 \[列名] ==’条件’;