MySQL 使用FEDERATED引擎跨库进行表之间join操作。

目标:数据库A中的表可以join数据库B中的表。

环境:Windows系统,免安装版mysql-5.7.22。

需求:数据库中表很多,将表按业务划分到不同的数据库,保存表之间必要的关联关系。

一、开启FEDERATED引擎

执行命令:SHOW ENGINES;,查看mysql数据库中Federated引擎是否开启。下图所示,为未开启。

这里写图片描述


修改mysql文件夹根目录的my.ini文件(Linux系统修改my.cnf文件):新添加一行,内容为federated,如下图所示:

这里写图片描述


重启MySQL

这里写图片描述


再次执行命令:SHOW ENGINES;,可以看到Federated引擎已开启。

这里写图片描述

二、新建两个数据库:A和B

A库中添加一张student表:

CREATE TABLE student(
    id VARCHAR(10) NOT NULL DEFAULT '' COMMENT '主键id',
    student_name VARCHAR(10) DEFAULT NULL COMMENT '学生姓名',
    school_id VARCHAR(10) NOT NULL DEFAULT '' COMMENT '学校id',
    PRIMARY KEY(id) 
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';


B库中添加一张school表:

CREATE TABLE school(
    id VARCHAR(10) NOT NULL DEFAULT '' COMMENT '主键id',
    school_name VARCHAR(10) DEFAULT NULL COMMENT '学校名称',
    PRIMARY KEY(id) 
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学校表';


三、表中添加数据

在数据库A中添加一行数据:

id = 1 
student_name = 琚建飞
school_id = 1


在数据库B中添加一行数据:

id=1
school_name = 廊坊师范


四、在数据库A中建立远程表

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java