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

news2024/12/21 13:52:17

阿里巴巴开源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.coloradmin.cn/o/653432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机视觉重磅会议VAlSE2023召开,合合信息分享智能文档处理技术前沿进展

近期,2023年度视觉与学习青年学者研讨会 (Vision And Learning SEminar, VALSE) 圆满落幕。会议由中国人工智能学会、中国图象图形学学会主办,江南大学和无锡国家高新技术产业开发区管理委员会承办。超五千名专家学者、知名高校师生以及来自OPPO、华为、…

docker 容器的网络类型

目录 vmware的三种网卡模式(网络模式) docker里的四种网络类型 参考资料:Docker四种网络模式 - 简书 (jianshu.com) 1、桥接模式(默认情况) 2、host模式 3、none模式 4、container模式 创建桥接模式网卡 网卡…

TensorFlow Core—基本分类:对服装图像进行分类

现在人工智能很火的,看到了这篇文章,给自己普及一下基础知识,也分享给大家,希望对大家有用。 本指南将训练一个神经网络模型,对运动鞋和衬衫等服装图像进行分类。即使您不理解所有细节也没关系;这只是对完…

「FPGA」基本时序电路元件——锁存器和触发器

「FPGA」基本时序电路元件——锁存器和触发器 文章目录 「FPGA」基本时序电路元件——锁存器和触发器1. 最简单的双稳态元件2. SR锁存器3. D锁存器(data latch)4. D触发器5. 寄存器(register) FPGA是一种数字电路实现的方式&#…

算法设计与分析知识点整理

文章目录 前言一、算法的基本概念1.算法的基本特征2.算法设计需要满足的目标3.算法和程序的区别 二、时间复杂度计算1.大O表示法2.最坏和平均情况3.根据递归方程求解时间复杂度3.1 根据递归树求解3.2 根据主方法求解 三、六大算法1.分治法1.1 算法思路1.2 适用范围1.3 基本步骤…

【MySql】聚合函数group byOJ题目

文章目录 聚合函数分组group by使用OJ题目描述描述 本篇主要介绍mysql的聚合函数和group by的使用,最后是OJ题目的练习。 聚合函数 MySQL中的聚合函数用于对数据进行计算和统计,常见的聚合函数包括下面列举出来的聚合函数: 函数 说明…

python开发构建深度学习分类模型,探索AI在地震事件分类中的应用于可解释性分析

最近看到了一篇蛮有意思的论文,如下: 将深度学习开发应用到了地震事件分析分类领域中去了,感觉挺有意思,就想着也来自己体验下看看,这里的数据集是网上找到的一个地震波应该是仿真实验的数据集,我们先来看下…

Pytest教程__Hook函数pytest_addoption(parser):定义自己的命令行参数(14-1)

考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行;有时候需要根据某个参数不同的参数值,执行不同的业务逻辑; 上面的场景我们都可以通过“在命令行中输入…

浏览器之BFC

浏览器之BFC 什么是BFCBFC的特性特性1:BFC会阻止垂直外边距折叠①相邻兄弟元素margin重叠问题②父子元素margin重叠问题 特性2:BFC不会重叠浮动元素BFC可以包含浮动----清除浮动 什么是BFC Block formatting context直译为"块级格式化上下文Block …

Python进阶语法之字符串

Python进阶语法之字符串 当我们处理文本数据时,字符串是不可避免的数据类型。Python 提供了很多字符串方法,它们可以帮助我们更方便地操作和处理字符串。在本篇博客中,我们将深入探讨 Python 字符串。 字符串的基本操作 在深入了解字符串…

亚马逊云科技 | Summit - 中国峰会

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 亚马逊云科技 | Summit - 中国峰会 亚马逊云科技提供全球覆盖广泛、服务深入的云平台,全球数据中心提供超过 200 项功能齐全的服务连续 11 年被 Gartner 评…

【python】数据可视化,使用pandas.merge()对dataframe和geopandas类型数据进行数据对齐

目录 0.环境 1.适用场景 2.pandas.merge()函数详细介绍 3.名词解释“数据对齐”(来自chatGPT3.5) 4.本文将给出两种数据对齐的例子 1)dataframe类型数据和dataframe类型数据对齐(对齐NAME列); 数据对…

[游戏开发]Unity颜色矫正无障碍方案

[目录] 0. 前言1. 颜色矫正2. 线性变换Shader2. 颜色纠正参数3. 摄像机后处理4. 效果5. 结束咯 0. 前言 之前有在关注色盲视觉纠正问题,最近在调整游戏的时候就打算把这个用上。 色弱色盲,这其实算是一种误称吧,只是人类中的少数派&#xf…

保护您的数据与ManageEngine Log360

在当今数字时代,网络安全成为了企业和组织不可忽视的重要议题。随着信息技术的发展和互联网的普及,企业面临着越来越多的网络威胁和数据泄露的风险。为了保护重要的数据资产和防止潜在的攻击,日志管理和事件关联成为了至关重要的一环。 Mana…

IIS安装ARR(Application Request Router)负载均衡扩展

IIS7.5安装ARR(Application Request Router)负载均衡扩展 本文主要记录我在IIS中安装ARR的全流程,本文参考了网上一些教程,但可能时间关系,与一些早期文章所述有所出入。 花了我半天的时间才最终安装成功,因此这里做一个记录。本…

立体解析Fiddler Filters:让你快速捕获和过滤网络请求

如果要对当前Fiddler的抓包进行过滤(如过滤掉与测试项目无关的抓包请求),那功能强大的 Filters 过滤器能帮到你。 如果你想学习Fiddler抓包工具,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的Fiddler抓包…

动态规划算法(多状态dp1)

动态规划算法专辑之多状态dp问题(1) 一、什么是多状态 多状态dp问题,指一个规模问题下存在多种状态,我们需要联合关注多种状态间的相互转移,才可以求解目的问题。 多状态问题可以理解为有限状态机,在有限…

节省时间、提升效率——Jetpack关爱你的摸鱼时间

JetPack Jetpack 是一个由 Google 提供的 Android 应用开发库集合。它旨在简化 Android 应用程序开发过程,提供一系列的库和工具,帮助开发者快速构建高质量、健壮、可扩展的 Android 应用。 Jetpack 包含多个组件,每个组件都专注于不同的功…

Nginx 的reload,升级以及关闭流程

一、reload流程 1 向master进程发送HUP信号(reload命令) 2 master进程校验配置语法是否正确; 3 master打开可能引入的新的监听端口; 4 master用新的配置文件启动新的worker子进程; 5 启动新的worker子进程之后&#x…

小马赠书【第8期】清华社 618 IT BOOK 多得活动(送书5本)

本期 敬 之 共精心挑选了 15 本 IT 相关书籍,包含 前端、后端、数据分析、人工智能、python 等各个领域。关于如何参与等具体活动信息请看活动详情页,以下是 15 本 IT 书籍介绍: 活动详情页:小马赠书【第8期】 1. 《Linux设备驱动…