阿里巴巴开源Chat2DB v1.0.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

Chat2DB新地址:
https://github.com/chat2db/Chat2DB

大家根据自己的电脑环境选择对应版本即可,博主这里使用的MacOS X64 (Intel芯片)版本

注意github上目前有重要公告Chat2DB将迁移到新地址: https://github.com/chat2db/Chat2DB

安装配置

正常双击打开拖动到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.hqwc.cn/news/5940.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 项目过程及如何使用 Spring

文章目录 1.创建 Spring 项目步骤1.1 创建 Maven 项目1.2添加 Spring 框架支持1.3 添加启动项2.如何使用 Spring2.1 存储 Bean 对象2.1.1 创建 Bean对象2.1.2 将 Bean对象注册到容器中 2.2 获取并使用 Bean对象2.2.1 使用 ApplicationContext 获取对象2.2.2 使用 BeanFactory 获…

【裸机开发】GPT 定时器(三) —— 使用GPT实现高精度延时

延时最简单粗暴的方式就是使用空循环来延时,依赖的是时钟主频(默认是396M)来计数,一旦修改了 6ull 的时钟主频,延时效果就会存在偏差。 因此我们可以使用 EPIT 或者 GPT 的计数功能实现高精度延时,EPIT 是…

探索MediaPipe的人像分割

MediaPipe是Google开源的计算机视觉处理框架,基于TensorFlow来训练模型。图像分割模块提供人像分割、头发分割、多类分割。本文主要探索如何实现人像分割,当然在人像分割基础上,我们可以做背景替换、背景模糊。 目录 一、配置参数与模型 1…

【AIGC】BaiChuan7B开源大模型介绍、部署以及创建接口服务

模型介绍 baichuan-7B是由百川智能开发的一个开源的大规模预训练模型。基于Transformer结构,在大约1.2万亿tokens上训练的70亿参数模型,支持中英双语,上下文窗口长度为4096。在标准的中文和英文权威benchmark(C-EVAL/MMLU&#x…

探索思维导图:提升思维能力与效率的利器

思维导图作为一种强大的思考工具,已经被广泛应用于各个领域,从学习、工作到创意思维和项目管理。 本文将为您介绍思维导图的基本概念、使用方法以及它对思维能力和效率提升的价值。通过学习和掌握思维导图,您将能够更系统地组织和表达您的思…

M3 architecure

using one picture from arm document . 1. 3级别流水线哈弗架构 采用三级流水线,为了简单,常见的流水线5级,对于带有OOOB的12级较为常见,足可见M3的架构简化了很多 2. thumb 加ARMV7-M ISA 指令集就是硬件和软件的中间交互规则…

群载波应急广播主机的应用

一、 概述 群载波主机是专为山洪灾害预警、气象预警、地质灾害预警设计的一款智能IP群载波主机。该群载波主机可通过网络实现与控制中心通讯,用户可实时远程控制功放的开关机状态以及检测设备的主要信息。群载波主机主要用于接收网络信号,与控制中心通讯…

剑指 Offer 33. 二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 观察数组我们可以得到一些初始数据。 数组的最后一位元素为根。根的左子树小于根数据,右子树…

Java面试题及答案整理( 金九银十最新版,持续更新)

最近可能有点闲的慌,没事就去找面试面经,整理了一波面试题。我大概是分成了 Java 基础、中级、高级,分布式,Spring 架构,多线程,网络,MySQL,Redis 缓存,JVM 相关&#xf…

回归预测 | MATLAB实现SSA-DBN麻雀算法优化深度置信网络的数据多输入单输出回归预测

回归预测 | MATLAB实现SSA-DBN麻雀算法优化深度置信网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-DBN麻雀算法优化深度置信网络的数据多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于麻雀算法优化深度置信网络(SSA-DB…

String、反射、枚举、lambda表达式以及泛型进阶(数据结构系列16)

目录 前言: 1. String 1.1 字符串常量池 1.1.1 创建对象的思考 1.1.2 字符串常量池(StringTable) 1.1.3 再谈String对象创建 1.1.4 intern方法 2. 反射 2.1 反射的定义 2.2 反射的用途 2.3 反射的基本信息 2.4 反射相关的类 2.4.…

网络安全、Web安全、渗透测试之笔经面经总结含答案

以下为网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作。 注:本套面试题,已整理成pdf文档,但内容还在持续更新中,因为无论如何都不可能覆盖所有的面试问题&#xf…