mysql远程跨库联合查询的示例

 更新时间:2022年03月01日 10:31:08   作者:程宇寒  
本文主要介绍了mysql远程跨库联合查询的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

注意:myemployees库和shoppingCart库在同一台物理主机,如果不在同一台物理主机该怎么办呢?下面我会介绍到。

情况一2个库在同一台物理主机

联合查询(不同的2个库,myemployees库和shoppingCart库),这2个库在同一台物理主机上,都在我本机。

#联合查询(不同的2个库,myemployees库和shoppingCart库)
SELECT emp01.`employee_id`, emp01.`first_name` FROM myemployees.employees AS emp01 LIMIT 0, 5
UNION
SELECT emp02.`employee_id`, emp02.`first_name` FROM shoppingCart.`employees2` AS emp02;
#
SELECT emp01.`employee_id`, emp01.`first_name` FROM myemployees.employees AS emp01 LIMIT 0, 5
UNION ALL
SELECT emp02.`employee_id`, emp02.`first_name` FROM shoppingCart.`employees2` AS emp02;

情况二2个库不在同一台物理主机(即2个库分别在不同的物理主机)

为了演示效果,我这里使用我的虚拟机,我虚拟机里安装了Linux系统(centos),Linux系统中已经安装了MySql数据库,MySql数据库服务已经启动了,所有的环境已经全部弄好了。

我的Linux系统(centos)的ip是192.168.117.66。

我打算我本地的author表和远程的user表进行联合查询。

在linux中输入SHOW CREATE TABLE `user`;这句话得到的结果后,我们把

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(20) DEFAULT NULL
)

这段代码拷贝到我本地的数据库中,并且在末尾加上

ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.117.66:3306/testDB/user';这句话。

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(20) DEFAULT NULL
)ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.117.66:3306/testDB/user';

其实上面的那段语句,说白了,就是在我本地的数据库中建了一个远程数据库的连接的快捷方式(远程数据库的连接快捷方式),类似于什么呢?就类似于我们window操作系统中的桌面上的桌面快捷方式,我们双击一下桌面上的某个软件图标就能打开该软件,一样的道理嘛。

执行上面的语句即可。

对了,还有一点要注意:

你要查一下,你本地的mysql数据库的FEDERATED引擎有没有开启。

SHOW ENGINES;

如果FEDERATED是NO的话,说明没有开启,需要你去修改一下mysql数据库的配置文件。

修改本地mysql数据库的配置文件,在配置文件末尾加上federated,如下图:

如果你是windows系统的话,就修改my.ini文件,如果你用的是Linux系统的话,就修改my.cnf文件。

修改完配置文件后记得重启一下mysql的服务。

linux重启mysql服务,service mysqld restart

windows重启mysql服务,在dos窗口中,输入net stop mysql服务名,然后再输入net start mysql服务名

OK,全部搞定后,执行如下sql语句,即可看到跨库查询的查询结果。

#
SELECT id, aname FROM author
UNION
SELECT id, `name` FROM `user`;

SELECT * FROM author INNER JOIN  `user`;

以上这种跨服务器跨库的查询,需要注意如下几点: 

1.该跨库查询方式不支持事务,最好别使用事务。

2.不能修改表结构。

3.MySQL使用这种跨库查询方式,远程数据库目前仅支持MySQL,其他数据库不支持。

4.表结构必须和目标数据库表完全一致。

到此这篇关于mysql远程跨库联合查询的示例的文章就介绍到这了,更多相关mysql远程跨库查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql中写判断语句的方法总结

    mysql中写判断语句的方法总结

    在本篇文章里小编给大家整理的是一篇关于mysql中写判断语句的方法总结内容,需要的朋友们可以学习参考下。
    2020-09-09
  • MySQL存储过程的深入讲解(in、out、inout)

    MySQL存储过程的深入讲解(in、out、inout)

    这篇文章主要给大家介绍了关于MySQL存储过程(in、out、inout)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • mysql查询结果命令行方式导出/输出/写入到文件的3种方法举例

    mysql查询结果命令行方式导出/输出/写入到文件的3种方法举例

    这篇文章主要给大家介绍了关于mysql查询结果命令行方式导出/输出/写入到文件的3种方法, 在使用MySQL进行数据库操作的过程中,我们经常需要将查询结果导出到文件中以备后续分析和处理,需要的朋友可以参考下
    2023-08-08
  • MySQL中二进制与重做日志文件的基本概念学习教程

    MySQL中二进制与重做日志文件的基本概念学习教程

    这篇文章主要介绍了MySQL中二进制日志文件与重做日志文件的基本概念学习教程,讲到了一些重做日志与二进制日志的区别,需要的朋友可以参考下
    2015-11-11
  • mysql重置root密码的完整步骤(适用于5.7和8.0)

    mysql重置root密码的完整步骤(适用于5.7和8.0)

    这篇文章主要介绍了mysql重置root密码的完整步骤,文中描述了如何停止MySQL服务、以管理员身份打开命令行、替换配置文件路径、修改密码以及重新启动MySQL服务的过程,需要的朋友可以参考下
    2025-01-01
  • mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

    mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

    MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常
    2012-11-11
  • mysql启动提示:错误2系统找不到指定文件的解决方案

    mysql启动提示:错误2系统找不到指定文件的解决方案

    这篇文章主要给大家介绍了mysql启动提示:错误2系统找不到指定文件的解决方案,文中通过图文结合的方式给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • mysql中lower_case_table_names=1参数的作用

    mysql中lower_case_table_names=1参数的作用

    lower_case_table_names是MySQL数据库中的一个系统变量,本文主要介绍了mysql中lower_case_table_names=1参数的作用,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • 详解MySQL中的死锁情况以及对死锁的处理方法

    详解MySQL中的死锁情况以及对死锁的处理方法

    这篇文章主要介绍了详解MySQL中的死锁情况以及对死锁的处理方法,文中主要讨论InnoDB存储引擎中的死锁情况,需要的朋友可以参考下
    2016-01-01
  • MySQL数据类型优化原则

    MySQL数据类型优化原则

    这篇文章主要介绍了MySQL数据类型优化原则的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11

最新评论