随着人工智能的发展,各行各业都出现了不少基于AI的工具来提升工作效率。就连国内的各个大厂也都在基于大模型开发自己的产品线,比如百度、阿里、网易、字节等等。今天我们就来分享一款AIGC生成式人工智能数据库客户端工具,虽然功能不多,但是足以让数据库小白直接上升为操作小能手。
Chat2DB 是一款有开源免费的多数据库客户端工具,支持 Windows、MAC 本地安装,也支持服务器端部署,Web 网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比 Chat2DB 集成了 AIGC 的能力,能够将自然语言转换为 SQL,也可以将 SQL 转换为自然语言,可以给出研发人员 SQL 的优化建议,极大地提升人员的效率,是 AI 时代数据库研发人员的利器。未来即使不懂SQL的运营业务也可以使用快速查询业务数据、生成报表能力。
github地址
https://github.com/chat2db/Chat2DB
根据实际情况选择对应版本下载安装即可。
下载地址
https://sqlgpt.cn/en
下载完成后直接运行exe,按步骤进行安装完成
1、打开客户端
2.选择mysql创建连接
前提:本地或远程先启动数据库
根据实际情况创建数据库连接
填写连接信息,点击“Test”按钮,若连接无问题则点击“Save”按钮。
3、ai能力配置
客户端设置中默认会填写custom ai的apikey
这个可以是基于chat2db的,当然有能力的可以选择openai进行测试,前提需要科学上网和apikey
我们这里直接选择chat2db即可,能能够达到良好的效果
4.数据库初始化
选择查看数据库列表,选择我们刚刚连接的本地数据库进行测试
双击本地数据库进入并创建一个console来执行我们初始化语句
-- chat_db数据库
drop database if exists chat_db;
create database chat_db default charset 'utf8mb4' COLLATE 'utf8mb4_general_ci';
-- 学生表
DROP TABLE IF EXISTS chat_db.student;
CREATE TABLE chat_db.student (
id INT PRIMARY KEY 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 '学生联系方式'
) COMMENT '学生信息表';
insert into chat_db.student(`name`,`gender`,`birthday`,`address`,`phone`) values
('张三','男','2000-01-01','北京','12345678901'),('李四','男','2001-02-01','北京2','12345678902'),('王五','女','2002-05-01','上海','12345678903');
-- 科目表:
DROP TABLE IF EXISTS chat_db.course;
CREATE TABLE chat_db.course (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '科目ID',
name VARCHAR(50) NOT NULL COMMENT '科目名称',
teacher VARCHAR(50) NOT NULL COMMENT '授课教师',
credit INT NOT NULL COMMENT '科目学分'
) COMMENT '科目表';
insert into chat_db.course(name,teacher,credit) values ('数据库','张老师',4),('大数据','李老师',4),('云计算','王老师',4);
-- 学生选修科目表:
DROP TABLE IF EXISTS chat_db.student_course;
CREATE TABLE chat_db.student_course (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '关系ID',
student_id INT NOT NULL COMMENT '学生ID',
course_id INT NOT NULL COMMENT '科目ID',
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
) COMMENT '学生选修科目表';
insert into chat_db.student_course(student_id,course_id)
select a.id,b.id from chat_db.student a , chat_db.course b;
-- 学生成绩表:
DROP TABLE IF EXISTS chat_db.score;
CREATE TABLE chat_db.score (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '成绩ID',
student_id INT NOT NULL COMMENT '学生ID',
course_id INT NOT NULL COMMENT '科目ID',
score INT NOT NULL COMMENT '成绩',
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
) COMMENT '学生成绩表';
insert into chat_db.score(student_id,course_id,score)
select a.student_id,a.course_id, (a.student_id+a.course_id)*12 from chat_db.student_course a;
执行 语句完成测试数据初始化。
点击库名,右键“查询”出现如下功能。
除了常规的数据库操作,我们还可用的AI功能:
自然语言转sql:输入一段文字,工具直接可以翻译为sql语句
转化sql:将当前sql语句转为其他工具的语句,比如mysql转mongodb
解释sql: 输入一段sql语句可以解释代表什么意思
优化sql:输入一段sql语句可以提出常见的优化方案,并提出具体优化的点
选择文本如“查询张三的云计算成绩”,点击“自然语言转SQL”。
a、填入需要转换sql的语句,这里直接写“查询张三的云计算成绩”
b、手动选择涉及的表,我为了放了全部选了
c、点击转换即可生成如下的文本
根据提供的表结构和SQL输入,可以使用以下SQL查询来获取张三的云计算成绩:
SELECT s.score
FROM student AS st
JOIN score AS s ON st.id = s.student_id
JOIN course AS c ON c.id = s.course_id
WHERE st.name = '张三' AND c.name = '云计算';
d、运行sql查询出结果分数为48分。
选中一段sql,点击解释SQL
结果如下:
这个SQL查询语句的目的是从数据库中获取学生"张三"在课程"云计算"中的成绩。 首先,使用INNER JOIN将"score"表与"student"表连接,连接条件是"score"表中的"student_id"列与"student"表中的"id"列相等。这样可以获取到学生的相关信息。 然后,再使用INNER JOIN将上一步得到的结果与"course"表连接,连接条件是"score"表中的"course_id"列与"course"表中的"id"列相等。这样可以获取到课程的相关信息。 接下来,使用WHERE子句来筛选结果,只保留学生姓名为"张三"且课程名称为"云计算"的记录。 最后,SELECT语句选择"score"表中的"score"列作为结果,即获取到了"张三"在"云计算"课程中的成绩。
选中SQL语句,点击“SQL优化”
结果如下:
优化建议如下: 1. 索引优化:确保student表和course表的name字段上都有索引,以加快查询速度。 2. 调整连接顺序:根据数据量和索引情况,可以尝试将student表放在第一位进行连接,以减少连接操作的数据量。 3. 子查询优化:可以考虑使用子查询来替代多个表的连接操作,以减少连接操作的数量。 4. 预编译语句:如果该SQL语句会被频繁执行,可以考虑使用预编译语句,以提高执行效率。 5. 缓存查询结果:如果该SQL语句的结果不经常变动,可以考虑将查询结果缓存起来,以减少对数据库的频繁查询。 6. 数据库优化:可以对数据库进行性能优化,如调整缓冲区大小、优化查询计划等,以提高整体查询性能。 请根据具体情况选择适合的优化方法,并进行测试和评估,以确定最佳的优化方案。
选中上述SQL,点击“SQL转换”,但是并未达到预期效果。如果需要这个功能,建议在设置中接入opanai。
Chat2DB 是一款有开源免费的多数据库客户端工具,集成了AIGC 生成式人工智能。其主要功能包括自然语言转sql、优化sql、转化sql、解释sql等功能,是一个真正意义上减轻劳动和提高效率的一款大模型数据库客户端工具。