zoukankan      html  css  js  c++  java
  • 【MySQL】跨库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中建立远程表

    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

    操作结果:

    这里写图片描述

    本地表和远程表

    1. 对本地表进行更新操作,远程表也会同步更新。
    2. 删除本地表,远程表不会删除。
    3. 远程表结构修改,本地表不会更新。
    原文地址:https://blog.csdn.net/gnd15732625435/article/details/80270096
  • 相关阅读:
    数据结构——算法之(029)( 字符串原地压缩)
    hihoCoder #1174:拓扑排序·一
    POJ 3026 Borg Maze
    Remove Duplicates from Sorted List II--LeetCode
    mach-o格式分析
    otool -l 可执行文件结构
    mach-o可执行文件结果
    ios 编译版本 最低版本 运行版本 动态链接库
    关于__IPHONE_OS_VERSION_MAX_ALLOWED和__IPHONE_OS_VERSION_MIN_ALLOWED的用法
    OO真经——关于面向对象的哲学体系及科学体系的探讨(下)
  • 原文地址:https://www.cnblogs.com/jpfss/p/12171591.html
Copyright © 2011-2022 走看看