0


阿里巴巴开源Chat2DB v1.0.11 初体验

阿里巴巴开源Chat2DB v1.0.11 初体验

前言

作为一名阿里巴巴开源项目的拥护者,从Chat2DB开源至今都有关注这个开源项目,因为之前的版本还存在较多BUG,暂时就没有分享,目前升级到 v1.0.11 版本后,我来谈谈我个人的一个使用感受

什么是Chat2DB

Chat2DB 是一款有开源免费的多数据库客户端工具,支持windows、mac本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力,能够将自然语言转换为SQL,也可以将SQL转换为自然语言,可以给出研发人员SQL的优化建议,极大的提升人员的效率,是AI时代数据库研发人员的利器,未来即使不懂SQL的运营业务也可以使用快速查询业务数据、生成报表能力。

下载安装

项目Releases地址:
https://github.com/alibaba/Chat2DB/releases
大家根据自己的电脑环境选择对应版本即可,博主这里使用的MacOS X64 (Intel芯片)版本

安装配置

正常双击打开拖动到Applications进行安装,安装完成后配置Chat2DB AI SQL功能,找到设置,填写Open Ai的密钥(登录OpenAi官网,右上角View API keys 创建即可),当然这里需要科学上网
在这里插入图片描述
创建完成后,在设置中输入刚刚获取的OpenAi密钥
在这里插入图片描述
至此一步我们已经完成了基础的配置,下面我们来感受一下Chat2DB

Chat2DB初体验

配置数据源

这里博主以mysql为例,点击加号新建数据源
在这里插入图片描述
填写相关链接信息 选择数据库,博主这里test为例
在这里插入图片描述

目前Mac版本选择了数据库test,但是实际上依旧还是将整个localhost的所有数据库列出来了,目前还是一个BUG,博主也在Issues建议官方不选择数据库默认所有,指定了数据库就单独显示某个库

准备测试数据

这里博主准备了一份测试数据表,分别是:科目表、学生成绩表、学生信息表、学生选修科目表,大家可以复制执行即可

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS =0;-- ------------------------------ Table structure for course-- ----------------------------DROPTABLEIFEXISTS`course`;CREATETABLE`course`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'科目ID',`name`varchar(50)NOTNULLCOMMENT'科目名称',`teacher`varchar(50)NOTNULLCOMMENT'授课教师',`credit`intNOTNULLCOMMENT'科目学分',PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='科目表';-- ------------------------------ Records of course-- ----------------------------BEGIN;INSERTINTO`course`VALUES(1,'语文','张老师',100);INSERTINTO`course`VALUES(2,'数学','王老师',100);COMMIT;-- ------------------------------ Table structure for score-- ----------------------------DROPTABLEIFEXISTS`score`;CREATETABLE`score`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'成绩ID',`student_id`intNOTNULLCOMMENT'学生ID',`course_id`intNOTNULLCOMMENT'科目ID',`score`intNOTNULLCOMMENT'成绩',PRIMARYKEY(`id`),KEY`student_id`(`student_id`),KEY`course_id`(`course_id`),CONSTRAINT`score_ibfk_1`FOREIGNKEY(`student_id`)REFERENCES`student`(`id`),CONSTRAINT`score_ibfk_2`FOREIGNKEY(`course_id`)REFERENCES`course`(`id`))ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生成绩表';-- ------------------------------ Records of score-- ----------------------------BEGIN;INSERTINTO`score`VALUES(1,1,1,90);INSERTINTO`score`VALUES(2,1,2,95);INSERTINTO`score`VALUES(3,2,1,100);INSERTINTO`score`VALUES(4,2,2,99);COMMIT;-- ------------------------------ Table structure for student-- ----------------------------DROPTABLEIFEXISTS`student`;CREATETABLE`student`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'学生ID',`name`varchar(50)NOTNULLCOMMENT'学生姓名',`gender`varchar(10)NOTNULLCOMMENT'学生性别',`birthday`dateNOTNULLCOMMENT'学生生日',`address`varchar(100)NOTNULLCOMMENT'学生住址',`phone`varchar(20)NOTNULLCOMMENT'学生联系方式',PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生信息表';-- ------------------------------ Records of student-- ----------------------------BEGIN;INSERTINTO`student`VALUES(1,'小明','男','2023-06-16','广州','13724889158');INSERTINTO`student`VALUES(2,'小羊','女','2023-06-16','广州','13800126000');COMMIT;-- ------------------------------ Table structure for student_course-- ----------------------------DROPTABLEIFEXISTS`student_course`;CREATETABLE`student_course`(`id`intNOTNULLAUTO_INCREMENTCOMMENT'关系ID',`student_id`intNOTNULLCOMMENT'学生ID',`course_id`intNOTNULLCOMMENT'科目ID',PRIMARYKEY(`id`),KEY`student_id`(`student_id`),KEY`course_id`(`course_id`),CONSTRAINT`student_course_ibfk_1`FOREIGNKEY(`student_id`)REFERENCES`student`(`id`),CONSTRAINT`student_course_ibfk_2`FOREIGNKEY(`course_id`)REFERENCES`course`(`id`))ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生选修科目表';-- ------------------------------ Records of student_course-- ----------------------------BEGIN;INSERTINTO`student_course`VALUES(1,1,1);INSERTINTO`student_course`VALUES(2,1,2);INSERTINTO`student_course`VALUES(3,2,1);INSERTINTO`student_course`VALUES(4,2,2);COMMIT;SET FOREIGN_KEY_CHECKS =1;

认识几个功能菜单

当你选择好对应的数据库表后,你会发现有这么4个菜单
在这里插入图片描述

  • 自然语言转SQL:简单来说就是 使用中文描述,软件自动帮我们生成SQL;
  • SQL解释: SQL语句转中文解释(有的时候我们会遇到非常复杂的SQL,有的甚至成百上千行的SQL,要读懂这段SQL可能需要几个小时甚至几天时间。通过Chat2DB就可以快速的了解这段SQL的含义)
  • 有的时候我们写了一段SQL性能不好,Chat2DB也可以帮我们优化SQL,提升查询性能
  • 不同数据库SQL预发间有略微的差异,我们也可以通过Chat2DB让他帮我们去转换这个SQL的语法(比如Mysql转SqlServer语句)

开始测试

自然语言转SQL

终端输入 ==查询学生小明的各科目成绩,包括科目名称、教师名字段 ==,点击自然语言转SQL
在这里插入图片描述

在弹出的选择表中选择本次查询所涉及到的几个表:course、score、student
在这里插入图片描述
最终生成如下:
在这里插入图片描述

SQL解释

那么我们使用这段生成的SQL反过来看看Chat2DB会帮我们解释成什么,选中生成的SQL点击SQL解释,输出如下:
在这里插入图片描述

--- BEGIN ---SELECT course.name, course.teacher, score.score 
FROM score 
INNERJOIN course ON score.course_id = course.id 
INNERJOIN student ON score.student_id = student.id 
WHERE student.name ='小明'--- 解释SQL ---
这个SQL查询语句的作用是从三个表中选择课程名称、教师和分数,其中分数是从score表中获取的。通过INNERJOIN将score表与course表和student表连接起来,连接条件是score表中的course_id等于course表中的id,同时score表中的student_id等于student表中的id。最后,通过WHERE子句筛选出学生名字为“小明”的记录。
--- END --- 

SQL优化

我们依旧使用这段生成的SQL看看Chat2DB会给我们一些什么优化建议:
在这里插入图片描述

--- BEGIN ---SELECT course.name, course.teacher, score.score 
FROM score 
INNERJOIN course ON score.course_id = course.id 
INNERJOIN student ON score.student_id = student.id 
WHERE student.name ='小明'--- SQL优化 ---
优化建议:

1. 添加索引:在score表的course_id和student_id列上添加索引,以提高JOIN操作的效率。

2. 避免使用通配符:在WHERE子句中避免使用通配符,如使用LIKE'%小明%',会导致全表扫描,影响查询性能。

3. 使用EXISTS替代INNERJOIN:如果只需要查询小明的成绩,可以使用EXISTS子查询替代INNERJOIN,可以减少JOIN操作的次数,提高查询效率。

优化后的SQL语句如下:

SELECT course.name, course.teacher, score.score 
FROM score 
INNERJOIN course ON score.course_id = course.id 
WHEREEXISTS(SELECT1FROM student WHERE student.id = score.student_id AND student.name ='小明')--- END --- 

使用总结

通过上面的简单实用,相信大家已经知道Chat2DB的实用方法,其次再我们一些简单的命令下,它也能帮我们生成我们想要的语句,博主测试过一些复杂的业务SQL可能暂时还无法给到很正确提示,在SQL优化方面也给出了一定的建议,博主感觉这些建议都是可以供参考的,当然实际的情况还是需要根据我们的业务场景来决定

后续功能

目前该开源项目还会提供支持环境隔离、支持团队协作,支持创建、修改、删除表,支持非关系型数据库的迭代版本,后续有新的功能版本,博主再来和大家分享,一下是项目的未来规划:
在这里插入图片描述

结语

以上就是博主对阿里巴巴开源Chat2DB v1.0.11版本的体验感受,如果你觉得有用希望点赞关注,以免错失后续版本的分享~ 谢谢大家


本文转载自: https://blog.csdn.net/lhmyy521125/article/details/131247494
版权归原作者 Micro麦可乐 所有, 如有侵权,请联系我们删除。

“阿里巴巴开源Chat2DB v1.0.11 初体验”的评论:

还没有评论