| 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询。 |
在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(……)ENGINE=FEDERATED CONNECTION='mysql://[username]:[password]@[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)、表结构必须和目标数据库表完全一致。
原文地址: https://www.linuxprobe.com/mysql-cross-database.html
编辑推荐:
- MySQL中跨库查询怎么搞?03-01
- 一步一步推导MySQL索引隐秘的底层数据结构03-01
- MySQL count(*)之索引选择03-01
- 为什么优化器选择了聚集索引?03-01
- MySQL索引提示03-01
- 如何使用SQL查询视图,Postico使用技巧分享~03-01
- 微笑03-01
- innodb新特性之buffer pool预热03-01
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- MySQL中跨库查询怎么搞?
MySQL中跨库查询怎么搞?
26-03-01 - 一步一步推导MySQL索引隐秘的底层数据结构
一步一步推导MySQL索引隐秘的底层数据结构
26-03-01 - 如何使用SQL查询视图,Postico使用技巧分享~
如何使用SQL查询视图,Postico使用技巧分享~
26-03-01 - 微笑
微笑
26-03-01 - MySQL中跨库查询怎么搞?
MySQL中跨库查询怎么搞?
26-03-01 - Mysql如何处理重复数据?让你的效率更高效
Mysql如何处理重复数据?让你的效率更高效
26-03-01 - 你的心在这
你的心在这
26-03-01 - Innodb关键特性之doublewrite
Innodb关键特性之doublewrite
26-03-01 - Innodb关键特性之Adaptive Hash Index
Innodb关键特性之Adaptive Hash Index
26-03-01 - 微信小程序申请微信支付教程
微信小程序申请微信支付教程
26-03-01



