共计 1028 个字符,预计需要花费 3 分钟才能阅读完成。
自动写代码机器人,免费开通
MySQL 中怎么实现跨库查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
一、同服务的跨库查询
同服务的跨库查询只需要在关联查询的时候带上数据名,SQL 的写法是这样的:SELECT * FROM 数据库 1.table1 x JOIN 数据库 2.table2 y ON x.field1=y.field2; 例如:
二、不同服务的跨库查询
不同服务的跨库查询,直接通过数据名加表明是无法进行关联的,这里需要用到 MySQL 数据库中的 federated 引擎。具体过程如下:
需求:服务 A 上的数据库 X 的表 A 需要关联服务 B 上的数据库 Y 中的表 B,查询需要的数据;
1、先查看 MySQL 数据库是否安装了 FEDERATED 引擎,通过命令 show engines; 如下图:
如上图所示,MySQL 安装了 FEDERATED 引擎,但 Support 是 No, 表示没有启用,去 my.cnf 文件末加上 1 行 FEDERATED,重启 MySQL 即可。若没有找到 FEDERATED 引擎,则需要去安装了。
2、在服务 A 上的数据库 X 中创建一个表 B,语句如下:CREATE TABLE table_name(hellip; hellip;)ENGINE=FEDERATED CONNECTION= mysql://[username]:
此处含有隐藏内容,需要正确输入密码后可见!
@[localtion]:[port]/[db-name]/[table-name]
说明:通过 FEDERATED 引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中,通过这个引擎可以实现远程数据访问功能。换句话说,这种建表方式会在服务 A 上的数据库 X 中创建了一个表结构文件 (即服务 B 上的数据库 Y 的 B 表的表结构文件),表的索引、数据等文件还在服务 B 上的数据库 Y 中,相当于一种快捷方式,方便关联。
3、在服务 A 上的数据库 X 中直接进行 A 表与 B 表关联,就可以查询出需要的数据了。
这种方式有以下几点是需要注意的:1)、该跨库查询方式不支持事务,最好别使用事务。2)、不能修改表结构。3)、MySQL 使用这种跨库查询方式,远程数据库目前仅支持 MySQL,其他数据库不支持。4)、表结构必须和目标数据库表完全一致。
关于 MySQL 中怎么实现跨库查询问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。
向 AI 问一下细节