MySQL跨库查询

一、跨库查询介绍

在MySQL中跨库查询主要分为两种情况,一种是同服务器的跨库查询;另一种是不同服务器的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询。

二、同服务器的跨库查询

同服务器的跨库查询只需要在关联查询的时候带上数据名,SQL的写法是这样的:SELECT * FROM 数据库1.table1 x JOIN 数据库2.table2 y ON x.field1=y.field2;例如:

8034dc78c67db4039b3c0c9369ab9f56.png

三、不同服务器的跨库查询

不同服务器的跨库查询,直接通过数据名加表明是无法进行关联的,这里需要用到MySQL数据库中的federated引擎。具体过程如下:

需求:服务A上的数据库X的表A需要关联服务B上的数据库Y中的表B,查询需要的数据;

1、先查看MySQL数据库是否安装了FEDERATED引擎,通过命令show engines;如下图:

fa537e90aad72e322d4133ad18e941f5.png

如上图所示,MySQL安装了FEDERATED引擎,但Support是No,表示没有启用,去my.cnf文件末加上1行FEDERATED,重启MySQL即可。若没有找到FEDERATED引擎,则需要去安装了。

2、在服务A上的数据库X中创建一个表B,语句如下:CREATE TABLE table_name(……)ENGINE=FEDERATED CONNECTION='mysql://[username]:[password]@[localtion]:[port]/[db-name]/[table-name]'

说明:通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中,通过这个引擎可以实现远程数据访问功能。换句话说,这种建表方式会在服务A上的数据库X中创建了一个表结构文件(即服务B上的数据库Y的B表的表结构文件),表的索引、数据等文件还在服务B上的数据库Y中,相当于一种快捷方式,方便关联。

145259c6f5d9ad213ca2df6560282643.png

3、在服务A上的数据库X中直接进行A表于B表关联,就可以查询除需要的数据了。

四、跨服务器的跨库查询特点

1、该跨库查询方式不支持事务,所有涉及到事务的操作,不要用这种方式。

2、不能修改表的结构, 只是查询使用。

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

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

b922ced1c58c06d5150eb652236c1b51.png

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值