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

news/2024/10/21 23:03:11/

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

  • 前言
  • 什么是Chat2DB
  • 下载安装
  • 安装配置
  • Chat2DB初体验
    • 配置数据源
    • 准备测试数据
    • 认识几个功能菜单
    • 开始测试
      • 自然语言转SQL
      • SQL解释
      • SQL优化
  • 使用总结
  • 后续功能
  • 结语

前言

作为一名阿里巴巴开源项目的拥护者,从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
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (`id` int NOT NULL AUTO_INCREMENT COMMENT '科目ID',`name` varchar(50) NOT NULL COMMENT '科目名称',`teacher` varchar(50) NOT NULL COMMENT '授课教师',`credit` int NOT NULL COMMENT '科目学分',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='科目表';-- ----------------------------
-- Records of course
-- ----------------------------
BEGIN;
INSERT INTO `course` VALUES (1, '语文', '张老师', 100);
INSERT INTO `course` VALUES (2, '数学', '王老师', 100);
COMMIT;-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (`id` int NOT NULL AUTO_INCREMENT COMMENT '成绩ID',`student_id` int NOT NULL COMMENT '学生ID',`course_id` int NOT NULL COMMENT '科目ID',`score` int NOT NULL COMMENT '成绩',PRIMARY KEY (`id`),KEY `student_id` (`student_id`),KEY `course_id` (`course_id`),CONSTRAINT `score_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`id`),CONSTRAINT `score_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `course` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生成绩表';-- ----------------------------
-- Records of score
-- ----------------------------
BEGIN;
INSERT INTO `score` VALUES (1, 1, 1, 90);
INSERT INTO `score` VALUES (2, 1, 2, 95);
INSERT INTO `score` VALUES (3, 2, 1, 100);
INSERT INTO `score` VALUES (4, 2, 2, 99);
COMMIT;-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (`id` int NOT NULL AUTO_INCREMENT COMMENT '学生ID',`name` varchar(50) NOT NULL COMMENT '学生姓名',`gender` varchar(10) NOT NULL COMMENT '学生性别',`birthday` date NOT NULL COMMENT '学生生日',`address` varchar(100) NOT NULL COMMENT '学生住址',`phone` varchar(20) NOT NULL COMMENT '学生联系方式',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生信息表';-- ----------------------------
-- Records of student
-- ----------------------------
BEGIN;
INSERT INTO `student` VALUES (1, '小明', '男', '2023-06-16', '广州', '13724889158');
INSERT INTO `student` VALUES (2, '小羊', '女', '2023-06-16', '广州', '13800126000');
COMMIT;-- ----------------------------
-- Table structure for student_course
-- ----------------------------
DROP TABLE IF EXISTS `student_course`;
CREATE TABLE `student_course` (`id` int NOT NULL AUTO_INCREMENT COMMENT '关系ID',`student_id` int NOT NULL COMMENT '学生ID',`course_id` int NOT NULL COMMENT '科目ID',PRIMARY KEY (`id`),KEY `student_id` (`student_id`),KEY `course_id` (`course_id`),CONSTRAINT `student_course_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`id`),CONSTRAINT `student_course_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `course` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生选修科目表';-- ----------------------------
-- Records of student_course
-- ----------------------------
BEGIN;
INSERT INTO `student_course` VALUES (1, 1, 1);
INSERT INTO `student_course` VALUES (2, 1, 2);
INSERT INTO `student_course` VALUES (3, 2, 1);
INSERT INTO `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 
INNER JOIN course ON score.course_id = course.id 
INNER JOIN student ON score.student_id = student.id 
WHERE student.name = '小明'
--- 解释SQL ---
这个SQL查询语句的作用是从三个表中选择课程名称、教师和分数,其中分数是从score表中获取的。通过INNER JOIN将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 
INNER JOIN course ON score.course_id = course.id 
INNER JOIN student ON score.student_id = student.id 
WHERE student.name = '小明'
--- SQL优化 ---
优化建议:1. 添加索引:在score表的course_id和student_id列上添加索引,以提高JOIN操作的效率。2. 避免使用通配符:在WHERE子句中避免使用通配符,如使用LIKE '%小明%',会导致全表扫描,影响查询性能。3. 使用EXISTS替代INNER JOIN:如果只需要查询小明的成绩,可以使用EXISTS子查询替代INNER JOIN,可以减少JOIN操作的次数,提高查询效率。优化后的SQL语句如下:SELECT course.name, course.teacher, score.score 
FROM score 
INNER JOIN course ON score.course_id = course.id 
WHERE EXISTS (SELECT 1 FROM student WHERE student.id = score.student_id AND student.name = '小明')
--- END --- 

使用总结

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

后续功能

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

结语

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


http://www.ppmy.cn/news/429818.html

相关文章

ios10怎么设置电池颜色_苹果手机电池颜色变黄了怎么调

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 苹果手机电池颜色变黄了的调整方法是: 1、打开手机,点击设置。 2、在设置界面点击“电池”一栏,进入后关闭“低电量模式”右边滑块,电…

用什么方法可以远程恢复苹果手机丢失的数据呢

苹果手机不小心误删了照片怎么办 今天小编在视频网站上看到了一段iphone 6概念机的设计视频,这也让很多的果粉又燃起了攒钱的动力。不得不说,苹果手机在细节方面确实有自己的一套。特别是很瘦女孩子喜欢。就单拿照相功能来说,苹果相机拍出来的…

苹果手机上网很慢_手机信号满格,但网速却很慢?无非是这4种原因,看完你就知道了...

众所周知,互联网信息时代,人们的生活已然离不开网络了,而连接网络的方式分为两种,一种是连接WiFi上网,一种是使用移动数据上网。虽然说,5G网络已经在国内展开普及,但是面对高昂的5G套餐资费&…

苹果xr如何截屏_iphone敲两下截屏如何操作 苹果手机触控截屏方法【教程步骤】...

iphone敲两下截屏如何操作?相信小伙伴们一定很好奇,下面小编为大家带来了苹果手机触控截屏方法教程详解,感兴趣的小伙伴赶紧跟着小编一起来看看吧 iphone敲两下截屏怎么设置 轻点两下进行截屏其实是苹果手机利用辅助触控功能实现的,这个功能使用前是需要提前进行设置的,如…

苹果库乐队怎么玩_学会这个,自己给苹果手机换来电铃声

苹果手机较早之前就可以在手机上制作铃声了,但是还是不少朋友都不知道怎么操作,今天来一套利用库乐队制作铃声的教程,收藏码住再看防止忘记哦。 首先我们要在苹果手机上下载‘’库乐队‘’这个软件,软件是免费的,APP STORE搜索就行。制作铃声以QQ音乐为例,因为现在大部分…

多开分身苹果版_【教程】苹果手机居然可以微信分身?全套教程,进来领取

微信分身版下载后,是可以同一个手机登陆多个微信号的,如果你不知道苹果手机微信分身怎么用?苹果手机怎么下载微信分身版的话,一起来看看wed114结婚网小编为大家提供的详细介绍吧。 苹果手机微信分身怎么用 1、点击“下载微信分身版”; 应用名称:微信多开分身版6.2.6下载v6…

云计算机手机apple,云电脑IOS版怎么在苹果IOS手机上使用教程

不管你是新手还是老手,很多人对云电脑的移动端还认为只有安卓版,最近极云普惠云电脑推出的云电脑IOS版很多人都不知道怎么入手,下面给大家带来怎么在苹果IOS手机上的使用教程,希望能够让你的苹果手机轻松变成电脑玩PC游戏。 云电脑IOS版经过了数个月的研发终于在3月份对所有…

苹果手机速度慢_苹果MagSafe 磁吸充电器的用户请注意这几个潜在问题

iPhone12具有和Apple Watch 6一样的MagSafe充电功能,MagSafe充电器的磁环可让iPhone12与MagSafe配件精准结合,增加电流传输的稳定度。然而使用者发现,使用MagSafe充电时,硅胶保护套会因为与配件接触而留下环状印记。 根据MacRumors报导,苹果在最新的iPhone支持文件中描述了…