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

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

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

一、同服务的跨库查询

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

 

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

二、不同服务的跨库查询

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

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

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

 

在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中,相当于一种快捷方式,方便关联。

 

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

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

这种方式有以下几点是需要注意的:1)、该跨库查询方式不支持事务,最好别使用事务。2)、不能修改表结构。3)、MySQL使用这种跨库查询方式,远程数据库目前仅支持MySQL,其他数据库不支持。4)、表结构必须和目标数据库表完全一致。

责任编辑:未丽燕 来源: 今日头条
相关推荐

2010-06-02 12:32:29

MySQL数据库

2010-03-30 18:48:24

Oracle 学习

2011-03-30 14:08:01

Entity Fram跨数据库查询

2010-06-02 18:07:44

MySQL数据库

2011-04-07 09:33:22

2011-03-17 17:27:48

Sybase数据库引擎

2023-05-29 15:23:37

MySQL数据库函数

2011-04-07 09:06:27

MySQL数据库密码

2011-07-14 15:24:26

MSSQL数据库跨数据库查询

2010-05-20 16:57:10

MySQL数据库

2019-04-28 10:00:11

UbuntuLinuxMySQL

2010-05-21 09:13:01

MySQL数据库查询

2023-01-18 17:22:38

YAML注释Linux

2011-01-19 12:27:42

Thunderbird备份

2010-05-13 17:41:58

2023-10-18 18:31:04

SQL查询数据

2023-09-21 09:31:24

MySQL数据库

2017-06-01 15:30:32

LinuxVim文件加密

2022-10-14 06:45:25

grepLinux

2021-04-22 06:15:59

Linux静态链接动态库
点赞
收藏

51CTO技术栈公众号