MySQL中进行跨库查询的方法示例

前言

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

一、同服务的跨库查询

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

二、不同服务的跨库查询

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

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

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

如上图所示,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中,相当于一种快捷方式,方便关联。

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

这种方式有以下几点是需要注意的:

1)、该跨库查询方式不支持事务,最好别使用事务。

2)、不能修改表结构。

3)、MySQL使用这种跨库查询方式,远程数据库目前仅支持MySQL,其他数据库不支持。

4)、表结构必须和目标数据库表完全一致。

总结

到此这篇关于MySQL中进行跨库查询的文章就介绍到这了,更多相关MySQL跨库查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL跨表查询与跨表更新

    有点 SQL 基础的朋友肯定听过 「跨表查询」,那啥是跨表更新啊? 背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为 t_dept_members, 系统中有另外一张表 t_user_info 记录了人员信息.要求将 t_dept_members 中有变化的信息更新到 t_user 表中,这个需求就是「跨表更新」啦 憨B SQL 直接被秒杀 不带脑子出门的就写出了下面的 SQL 看到身后 DBA 小段总在修仙,想着让他帮润色一下

  • mysql中的跨库关联查询方法

    业务场景:关联不同数据库中的表的查询 比如说,要关联的表是:机器A上的数据库A中的表A && 机器B上的数据库B中的表B. 这种情况下,想执行"select A.id,B.id from A left join B on ~~~;"那是不可能的,但业务需求不可变,数据库设计不可变,这就蛋疼了.. 解决方案:在机器A上的数据库A中建一个表B... 这当然不是跟你开玩笑啦,我们采用的是基于MySQL的federated引擎的建表方式. 建表语句示例: CREATE TABL

  • mysql 跨表查询、更新、删除示例

    下面来谈谈跨表插入,更新和删除 首先讨论的是跨表查询: insert into `table_A` select * from `table_B`;注意*代表全部插入. 接着又讨论关于跨表更新 复制代码 代码如下: update `table_A`, `table_B` set `table_A`.`name` = `table_B`.`name` where `table_A`.`id` = `table_B`.`id`;

  • mysql跨库事务XA操作示例

    本文实例讲述了mysql跨库事务XA操作.分享给大家供大家参考,具体如下: 前一段时间在工作中遇到了跨库事务问题,后来在网上查询了一下,现在做一下整理和总结. 1.首先要确保mysql开启XA事务支持 SHOW VARIABLES LIKE '%XA%' 如果innodb_support_xa的值是ON就说明mysql已经开启对XA事务的支持了. 如果不是就执行: SET innodb_support_xa = ON <?PHP $dbtest1 = new mysqli("172.20.

  • Yii2实现跨mysql数据库关联查询排序功能代码

    背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库: memory (存储常规数据表) 中有一个 user 表(记录用户信息) memory_stat (存储统计数据表) 中有一个 user_stat (记录用户统计数据) 现在在 user 表生成的 GridView 列表中展示 user_stat 中的统计数据 只需要在User的model类中添加关联 public function getStat() { return $this->hasOne(U

  • MySql实现跨表查询的方法详解

    复制代码 代码如下: SELECT c.id, c.order_id, c.title, c.content, c.create_time, o.last_pic FROM `orders` o , `case` c WHERE c.order_id = o.order_id ORDER BY c.id DESC LIMIT 15; 关于跨表提取字段的方法!利用order_id相同字段,提取case中的id,order_id,title,content,create_time:orders表中的

  • MySQL中进行跨库查询的方法示例

    前言 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询:另一种是不同服务的跨库查询:它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 一.同服务的跨库查询 同服务的跨库查询只需要在关联查询的时候带上数据名,SQL的写法是这样的:SELECT * FROM 数据库1.table1 x JOIN 数据库2.table2 y ON x.field1=y.field2:例如: 二.不同服务的跨库查询 不同服务的跨库查询,直接通过数据名加表明是无法进行关联的,这里需要用到MySQL数

  • PostgreSQL中使用dblink实现跨库查询的方法

    最近一个sql语句涉及到跨库的表之间的联合查询,故研究学习下. 一开始研究知道了sql语句的写法,但是执行通过不了,需要先安装dblink扩展.这些博文里都没说清楚,感谢网友指点,在windows下只需要在相应的数据库下执行sql语句"create extension dblink"就ok了.而以上的博文基本上说的都是linux下的操作方法,也因此我走了弯路. 2.下载了PostgreSQL的源代码,却不知道语句在哪执行,貌似是在linux下的shell里执行的,我却在psql和cmd

  • SQLServer 跨库查询实现方法

    本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Server 中 SQL 语句中对象的完整表达式是: [DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject] 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限. 复制代码 代码如下: select * from CfteaDb1.dbo.CfteaTa

  • oracle跨库查询的方法

    在Oracle本地数据库端执行赋权dbuser帐号 SQL> grant create database link to dbuser; 1.配置本地数据库服务器的tnsnames.ora文件 $vi $ORACLE_HOME/network/admin/tnsnames.ora 添加如下行,其中DBLINK为连接名(可自定义),HOST和PORT为数据库侦听的IP及端口,SERVICE_NAME为数据库的SID, MEDIADBLINK = (DESCRIPTION = (ADDRESS_LI

  • 详解mysql跨库查询解决方案

    1.第一种跨库查询,是在同一个mysql服务器下两个不同的数据库之间的联查,关系如下图 在同一个mysql服务器下,不同的两个数据直接加上库名就可以实现跨库查询了 select * from t_test1 t1, test2.t_test2 t2 where t1.id = t2.id 执行sql查询到一下结果 2.第二种跨库查询,是在两台不同服务器(物理服务器)上分别安装的mysql服务器,实现跨库查询,其实现原理类似一个虚拟映射,需要用到mysql的另一个存储引擎Federated,FED

  • Access的跨库查询 (图)

    大家还记得mssql的跨库查询吧,其实在access中也可以实现2个数据之间的交叉查询.下面我就给大家介绍下access的跨库查询. 首先让我们看看在access里是怎样实现对mdb文件进行查询的,我们随便创建个空数据库,对数据库D:\daos\db\daidalos.mdb里的admin表的内容进行查询,SQL语句为: javascript:if(this.width>500)this.width=500" border=0> 查询后,成功返回目标数据库里表admin表里的内容:

  • php结合ACCESS的跨库查询功能

    问题说明: 有时需要在两个或三个数据库的表中,通过相关关键字,查询获取所需记录集,用一般的SQL查询语句是实现不了的,可通过ACCESS的跨库查询功能实现. 解决方法: 例如"装材类型"和"装材"两张表是在不同的数据库中的,具体查询方法,如下: 复制代码 代码如下: @"Select * from 装材类型 as a INNER JOIN [;database=" AppDomain.CurrentDomain.BaseDirectory &qu

  • mysql中find_in_set函数的基本使用方法

    前言 这是我最近新接触到的一个函数, 我在项目中的使用场景是这样的: 有一个应用类型表,表中有parentId字段和parentIds字段,前者为父级id,后者为多级父级id,在库中都是varchar类型,parentIds由多个父级id拼接而成由","分隔. 组长告知我可以使用该函数,就去进行了了解与使用. 语法 FIND_IN_SET(str,strlist) 定义 假如字符串str在由多个子链组成的字符串列表strlist中,则返回值的范围在1到N之间. 一个字符串列表就是一个由

  • MySQL 中如何归档数据的实现方法

    目录 什么是pt-archiver 安装 简单入门 实现原理 批量归档 不同归档参数之间的速度对比 其它常见用法 (1)删除数据 (2)将数据归档到文件中 如何避免主从延迟 常用参数 总结 归档,在 MySQL 中,是一个相对高频的操作. 它通常涉及以下两个动作: 迁移.将数据从业务实例迁移到归档实例. 删除.从业务实例中删除已迁移的数据. 在处理类似需求时,都是开发童鞋提单给 DBA,由 DBA 来处理. 于是,很多开发童鞋就好奇,DBA 都是怎么执行归档操作的?归档条件没有索引会锁表吗?安全

随机推荐