暂无图片
暂无图片
19
暂无图片
暂无图片
8
暂无图片

在MySQL中怎样进行跨库查询?

原创 程序猿小旺 2020-07-10
15057

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

一、同服务的跨库查询

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

image.png
同服务的跨库查询

二、不同服务的跨库查询

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

需求:服务A上的数据库X的表A需要关联服务B上的数据库Y中的表B,查询需要的数据;1、先查看MySQL数据库是否安装了FEDERATED引擎,通过命令show engines;如下图:

image.png
MySQL安装了的引擎

如上图所示,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中,相当于一种快捷方式,方便关联。

image.png

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

这种方式有以下几点是需要注意的

(1)该跨库查询方式不支持事务,最好别使用事务。
(2)不能修改表结构。
(3)MySQL使用这种跨库查询方式,远程数据库目前仅支持MySQL,其他数据库不支持。
(4)表结构必须和目标数据库表完全一致。

作者:程序猿小旺
文章来源:https://baijiahao.baidu.com/s?id=1671757392025220097&wfr=spider&for=pc

最后修改时间:2020-07-10 15:30:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

筱悦星辰
暂无图片
1年前
评论
暂无图片 0
不求事事完美,但求超越自己,有正视不足的底气,才有一往无前的勇气。
1年前
暂无图片 点赞
评论
Zixin Huo
暂无图片
2年前
评论
暂无图片 0
文章来源:https://baijiahao.baidu.com/s?id=1671757392025220097&wfr=spider&for=pc
2年前
暂无图片 点赞
评论
T
Ty3306
暂无图片
2年前
评论
暂无图片 0
收藏 https://www.modb.pro/db/27539?utm_source=index_ai
2年前
暂无图片 点赞
评论
兜兜
暂无图片
2年前
评论
暂无图片 0
2年前
暂无图片 点赞
评论
zhangyfr
暂无图片
2年前
评论
暂无图片 0
👍🏻
2年前
暂无图片 点赞
评论
ora_221
暂无图片
2年前
评论
暂无图片 0
2年前
暂无图片 点赞
评论
查看更多 >