我是靠谱客的博主 外向冬日,最近开发中收集的这篇文章主要介绍Mysql远程跨库多表联合查询的解决方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、前言

在数据库 testDB01中新建数据表t_student(学生信息)

CREATE TABLE `t_student` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`gender` varchar(6) DEFAULT NULL COMMENT '性别',
`age` tinyint(4) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生信息';

在这里插入图片描述
在数据库 testDB02中新建数据表t_student(学生成绩信息)

CREATE TABLE `student_score` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`student_id` int(11) DEFAULT NULL COMMENT '学员id',
`score` varchar(255) DEFAULT NULL COMMENT '分数',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生成绩信息';

在这里插入图片描述
现在需要查询统计的结果为,学员姓名、年龄、成绩

2、查看数据库是否支持FEDERATED,

show engines

在这里插入图片描述
修改数据库的配制文件my.ini,(我的my.ini的路径为:D:ProgramDataMySQLMySQL Server 5.7/my.ini),将federated添加到my.ini文件中

在这里插入图片描述
修改完my.ini文件后,在开始中输入"服务"回车,进入“服务”页面
在这里插入图片描述
如下图,在“服务”页面,选中“MySQL57”,右键重新启动。
在这里插入图片描述
然后再次查看数据库是否支持FEDERATED,如下图,已显示"YES"
在这里插入图片描述

3、在testDB02数据库中执行以下脚步:

CREATE TABLE `t_student` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`gender` varchar(6) DEFAULT NULL COMMENT '性别',
`age` tinyint(4) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=FEDERATED AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='学生信息'
CONNECTION='mysql://root:123456@127.0.0.1:3306/testDB01/t_student'

在这里插入图片描述
如上图,左边testdb02数据库中,选中“表”右键刷新,就可以看到testdb02数据库中多了t_student表,然后就可以在testdb02数据库中进行多表连接查询了

select t.name as '姓名',t.gender as '性别',s.score as '分数'
from student_score s,t_student t
where s.student_id = t.id

在这里插入图片描述

4、在testdb01数据库中t_student表中添加一 条数据,

在这里插入图片描述
然后在testdb02数据库中查询t_student表中的数据,确认是否有刚才新增的"陈葱"的记录,如下图,"陈葱"的记录也可以查到
在这里插入图片描述

5、在testdb02数据库,执行一条修改t_student数据表的语句,然后查看testdb01数据库中的t_student中的数据是否也进行了改动

update t_student set name = '小亮-che' where id = 1;

在这里插入图片描述
如下图,testdb01数据库的id为1的学生姓名已改为"小亮-che"
在这里插入图片描述

6、CONNECTION还可以使用另外一种方式(需要注意的是SERVER , WRAPPER):

CREATE SERVER server_student
FOREIGN DATA WRAPPER mysql
OPTIONS (HOST '127.0.0.1',USER 'root',PASSWORD '123456' ,PORT 3306,DATABASE 'testdb01');
CREATE TABLE `t_student_2` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`gender` varchar(6) DEFAULT NULL COMMENT '性别',
`age` tinyint(4) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=FEDERATED AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='学生信息'
CONNECTION='server_student'

在这里插入图片描述

7、小结


本示例演示的是本地两个数据库之间的两张表连接查询,实际生产环境是可以支持不在两台不在同一个服务器上的两个数据库之间的数据库之间的连接查询的。

最后

以上就是外向冬日为你收集整理的Mysql远程跨库多表联合查询的解决方案的全部内容,希望文章能够帮你解决Mysql远程跨库多表联合查询的解决方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部