问题导入
在实际开发中,我们可能会遇到跨库查询数据的需要,可能是同一连接下的不同数据库的表,或是远程数据库的表。为了开发方便,我们通常会把异库的表映射到本地来读取数据。本文来说说MySQL下的处理办法,其他数据库思路相同,可能具体过程略有差异。
一、同一连接下的不同数据库通过视图映射到本地
假设在同一连接下有数据库db1和db2,现需要将db2.user表映射到db1中,可以使用如下语句在db1中创建视图
CREATE OR REPLACE VIEW db1.vuser AS SELECT * FROM db2.user
db2.user成功映射到db1中
在这样 我们对db1.vuser中的数据增删改查,就可以直接影响到db2.user,当然前提是拥有操作db2.user相关操作权限,把我们db2中需要的表通过视图全部映射到db1中,我们就可以像操作本地库一样操作异库。
二、不同服务下通过FEDERATED存储引擎访问在远程数据库的表中的数据
Federate存储引擎也是mysql比较常用的存储引擎,使用它可以访问远程的mysql数据库上的表