Redian新闻
>
阿里巴巴开源 Chat2DB v1.0.11 带你上手体验!

阿里巴巴开源 Chat2DB v1.0.11 带你上手体验!

公众号新闻

推荐阅读

彻底抛弃navicat ,阿里刚刚推出了Chat2DB      
 

什么是 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。ChatGPT中文网站:http://gpt.cxyquan.com/

Chat2DB 初体验

配置数据源

这里以 MySQL 为例,点击加号(+)新建数据源。

填写相关链接信息,选择数据库,这里 test 为例:

目前 MAC 版本选择了数据库 test,但是实际上依旧还是将整个 localhost 的所有数据库列出来了。这是个已知 Bug,博主也提交了 Issue,建议官方不选择数据库默认所有,指定了数据库就单独显示某个库。

准备测试数据

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


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(50NOT NULL COMMENT '科目名称',
  `teacher` varchar(50NOT 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 (11190);
INSERT INTO `score` VALUES (21295);
INSERT INTO `score` VALUES (321100);
INSERT INTO `score` VALUES (42299);
COMMIT;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '学生ID',
  `name` varchar(50NOT NULL COMMENT '学生姓名',
  `gender` varchar(10NOT NULL COMMENT '学生性别',
  `birthday` date NOT NULL COMMENT '学生生日',
  `address` varchar(100NOT NULL COMMENT '学生住址',
  `phone` varchar(20NOT 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 (111);
INSERT INTO `student_course` VALUES (212);
INSERT INTO `student_course` VALUES (321);
INSERT INTO `student_course` VALUES (422);
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。

ChatGPT中文网站:http://gpt.cxyquan.com/

最终生成如下:

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 可能暂时还无法给到很正确提示,在 SQL 优化方面也给出了一定的建议,博主感觉这些建议都是可以供参考的,当然实际的情况还是需要根据我们的业务场景来决定。

后续功能

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

来源:blog.csdn.net/lhmyy521125/article/details/131247494




 ChatGPT中文网站



可以在国内同ChatGPT直接进行对话,支持GPT4.0 和 AI绘图,简直太方便了,今天新注册的直接送50次提问次数 !


   http://ai.cxyquan.com/ (复制到浏览器打开)





微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
阿里巴巴史上最大变革早鸟报|阿里巴巴辟谣裁员;百度搜索回应被必应超越;抖音首页上线“经验”频道...重磅!谷歌全新语言模型PaLM 2挑战GPT-4;格力:孟羽童已离职;阿里巴巴取消CTO职位丨邦早报长城汽车公开举报比亚迪;阿里巴巴辟谣各业务裁员;百度搜索回应被必应超越:很离谱;杭州房东焦虑二手房卖不掉...中国人骗中国人?从阿里巴巴严选卖山寨无比滴,到伪造的Sawyer防蚊产品B站有AI助手了,上手体验后我找到了有意思的东西早报 | LVMH正在寻找下一个百年奢侈品牌;瞄准年轻人,170周年的Levi’s® 开启丹宁文化复兴;阿里巴巴公布分拆计划穿军装的老海归【老键曲库】18岁的忧伤者 Asadof - Dark Sun巴黎市长将重修Châtelet 广场以方便行人社招 | 阿里巴巴热招中!世界五百强,股权激励,内含面经阿里巴巴:蚂蚁拟回购约5671亿元股份,阿里正考虑是否参与恭喜DBC职梦学员收到阿里巴巴数据研发岗2024暑期实习终面邀请!只有爱是不够的长城汽车举报比亚迪,双方最新回应;微信新增锁定功能;阿里巴巴辟谣裁员;OpenAI强敌再获4.5亿美元投资丨邦早报5060 血壮山河之武汉会战 鏖战幕府山 29李彦宏称AI不会减少工作机会;58同城被曝大裁员;美国一州宣布全面封杀TikTok;阿里巴巴多业务启动融资上市计划...阿里巴巴重大人事调整:蔡崇信接替张勇;快递新规入柜需经同意,虚假签收可罚3万;蔚来获中东主权基金11亿美元投资丨雷峰早报分布式PostgreSQL基准测试:Azure Cosmos DB、CockroachDB和YugabyteDB新的阿里巴巴:一家Alphabet+巴菲特的公司?忆郭永怀【城事】巴黎市长将重修Châtelet 广场以方便行人Nature子刊丨揭示能反映AD病理改变的更优生物标志:CSF中tau T217和T205处的磷酸化占比大裁员?阿里巴巴回应阿里巴巴集团公布2023年第一季度及全年财;百度副总裁、“希壤”业务负责人马杰离职(广告狂人日报)阿里巴巴集团前副总裁胡臣杰加入「开源中国」,担任首席战略官|36氪独家阿里巴巴公开回应大裁员事件!比亚迪回应被长城汽车举报,阿里巴巴辟谣裁员,百度回应被必应超越,重压下OpenAI可能退出欧洲市场,这就是今天的其他大新闻!联想突然被曝裁员数千人,利润下降75%;理想要求员工朋友圈发布与蔚来对比图;阿里巴巴否认裁员传言 | 雷峰早报“降糖新星”再跨界?研究发现:SGLT2i可显著降低T2DM/HF患者痛风风险上手体验小米Civi 3:“拼色”美翻天,镜头翻倍拍人无敌...好看又好用轻薄又大电池的拍照手机?荣耀90 Pro 真机上手体验你新叠徕了!小米MIX Fold 3上手体验:性能拉满,折叠屏里的全能战士…围观 ◇ 从阿里巴巴搞到的加拿大2元硬币仅需5分一枚?加拿大警方介入,阿里巴巴表态Google新大模型赶超GPT-4/理想一季度交付量创历史新高/阿里巴巴取消首席技术官职位
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。