【MySQL】跨库join
mysql Join 跨库
2023-09-27 14:24:44 时间
目标:数据库A中的表可以join数据库B中的表。
环境:Windows系统,免安装版mysql-5.7.22。
需求:数据库中表很多,将表按业务划分到不同的数据库,保存表之间必要的关联关系。
一、开启FEDERATED引擎
执行命令:SHOW ENGINES;
,查看mysql数据库中Federated引擎是否开启。下图所示,为未开启。
![这里写图片描述](https://img2018.cnblogs.com/blog/1112483/202001/1112483-20200109150804147-1403017266.png)
修改mysql文件夹根目录的my.ini文件(Linux系统修改my.cnf文件):新添加一行,内容为federated,如下图所示:
![这里写图片描述](https://img2018.cnblogs.com/blog/1112483/202001/1112483-20200109150819036-1641409806.png)
重启MySQL
![这里写图片描述](https://img2018.cnblogs.com/blog/1112483/202001/1112483-20200109150832877-1616306875.png)
再次执行命令:
SHOW ENGINES;
,可以看到Federated引擎已开启。 ![这里写图片描述](https://img2018.cnblogs.com/blog/1112483/202001/1112483-20200109150851110-1352136614.png)
二、新建两个数据库: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中建立远程表
CREATE TABLE school (
`id` varchar(10) NOT NULL DEFAULT '' COMMENT '主键id',
`school_name` varchar(10) DEFAULT NULL COMMENT '学校名称',
PRIMARY KEY (`id`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8
COMMENT='学校表-远程表' CONNECTION='mysql://root:root@localhost:3306/b/school';
-- root:root 远程数据库的账号和密码
-- localhost:3306 远程数据库的ip和端口
-- b 远程数据库的名称
-- school 远程数据库的表名称
五、执行join操作
SELECT s.id, s.student_name, sc.school_name
FROM student s JOIN school sc ON s.school_id = sc.id
操作结果:
![这里写图片描述](https://img2018.cnblogs.com/blog/1112483/202001/1112483-20200109150907734-1022407679.png)
本地表和远程表
- 对本地表进行更新操作,远程表也会同步更新。
- 删除本地表,远程表不会删除。
- 远程表结构修改,本地表不会更新。
相关文章
- mysql中什么是逻辑备份
- MySQL JOIN操作报错问题小解
- MySQL优化案例:半连接(semi join)优化方式导致的查询性能低下
- MySQL新版本将支持Hash Join?(附PPT)
- 找到 mysql 数据库中的不良索引
- [转]mysql的full join的实现
- MySQL 5.6 中 TIMESTAMP 的变化
- MySQL第二讲 MySQL主从架构搭建
- 138 张图带你 MySQL 入门
- mysql计算年龄
- 《SQL学习指南(第2版)(修订版)》——1.3 什么是MySQL
- 基于Java(Struts2 框架)+Mysql实现(Web)学生成绩管理系统【100010053】
- 【mySQL】left join、right join和join的区别
- Mysql日期函数
- Mysql-多个left join 计算逻辑
- mysql-proxy
- mysql实现full join
- mysql left join 几个意思
- mysql为什么我的left join之后比查单表数据行更多?
- MySQL的not exists与双重否定(模板)
- [Mysql] 分页查询
- MySQL基本SQL语句2(DML)