Chat2DB使用
当前使用的版本为1.0.11。
一.Chat2DB介绍
Chat2DB 是一款开源免费的多数据库客户端工具。
能够将自然语言转换为SQL,也可以将SQL转换为自然语言。
支持windows、mac本地安装,也支持服务器端部署,web网页访问。
支持多种数据库:MySQL,PostgreSQL,Oracle,DB2,ClickHouse,OceanBase,Redis,Hive,MongoDB等
Chat2DB地址
github地址
二.下载安装
根据实际情况选择对应版本下载安装即可。
下载地址
三.配置
1.创建连接
前提:本地或远程先启动数据库
根据实际情况创建数据库连接
填写连接信息,点击“测试连接”按钮,若连接无问题则点击“连接”按钮。
2.数据库初始化
# 根据实际情况进行修改
# 这里修改mysql配置my.ini文件,然后启动数据库
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
character_set_database=utf8mb4
collatior-server=utf8_general_ci
mysql中创建chat-db库,并创建表及插入数据
show charset;
SHOW VARIABLES LIKE 'character%';
show variables like 'collation_%';
show databases;
-- 可设置字符集
set names utf8mb4;
set character_set_database=utf8mb4;
set character_set_server=utf8mb4;
set collation_database=utf8mb4_general_ci;
drop database if exists chat_db;
create database chat_db default charset 'utf8mb4' COLLATE 'utf8mb4_general_ci';
DROP TABLE IF EXISTS chat_db.student_course;
DROP TABLE IF EXISTS chat_db.score;
DROP TABLE IF EXISTS chat_db.course;
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 '学生信息表';
-- 科目表:
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 '科目表';
-- 学生选修科目表:
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 '学生选修科目表';
-- 学生成绩表:
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 '学生成绩表';
delete from chat_db.student;
insert into chat_db.student(`name`,`gender`,`birthday`,`address`,`phone`) values
('张三','男','2000-01-01','北京','12345678901'),('李四','男','2001-02-01','北京2','12345678902'),('王五','女','2002-05-01','上海','12345678903');
delete from chat_db.course;
insert into chat_db.course(name,teacher,credit) values ('数据库','张老师',4),('大数据','李老师',4),('云计算','王老师',4);
delete from chat_db.student_course;
insert into chat_db.student_course(student_id,course_id)
select a.id,b.id from chat_db.student a , chat_db.course b
;
delete from chat_db.score;
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;
;
3.配置
配置方式
填写完成后,点击应用
四.使用
1.自然语言转SQL语句
点击库名,右键“新建查询”出现如下功能。
选择文本如“查询张三的云计算成绩”,点击“自然语言转SQL”。
选择表如下,点击“确认”。
自动生成sql语句如
--- BEGIN ---
查询张三的云计算成绩
--- 自然语言转换 ---
SELECT score
FROM score
JOIN student ON score.student_id = student.id
JOIN course ON score.course_id = course.id
WHERE student.name = '张三'
AND course.name = '云计算'
--- END ---
选择sql语句,点击执行
2. SQL解释
选中一段sql,点击SQL解释。
这里执行了两次
第一次附加信息:解释SQL的目的
第二次附加信息:解释SQL查询的目的
结果分别如下
3. SQL优化
选中SQL语句,点击“SQL优化”。
填写附加信息,点击“确认”。
执行结果
相同的附加条件,第二次执行结果
4. SQL转换
选中上述SQL,点击“SQL转换”。
--- BEGIN ---
SELECT score
FROM score
JOIN student ON score.student_id = student.id
JOIN course ON score.course_id = course.id
WHERE student.name = '张三'
AND course.name = '云计算'
--- SQL转换 ---
db.score.aggregate([
{
$lookup: {
from: "student",
localField: "student_id",
foreignField: "id",
as: "student"
}
},
{
$unwind: "$student"
},
{
$lookup: {
from: "course",
localField: "course_id",
foreignField: "id",
as: "course"
}
},
{
$unwind: "$course"
},
{
$match: {
"student.name": "张三",
"course.name": "云计算"
}
},
{
$project: {
score: 1
}
}
])
--- END ---