>  기사  >  데이터 베이스  >  MySQL의 데이터베이스 간 관련 쿼리 방법에 대한 자세한 설명

MySQL의 데이터베이스 간 관련 쿼리 방법에 대한 자세한 설명

黄舟
黄舟원래의
2017-05-28 09:40:581817검색

이 글에서는 주로 mysql의 데이터베이스 간 연결 query 방법을 소개합니다. 필요한 친구는

비즈니스 시나리오: 서로 다른 데이터베이스의 테이블을 연결하는 쿼리

예를 들어 연결될 테이블은 다음과 같습니다. : 머신 A의 데이터베이스 A에 있는 테이블 A 및 머신 B의 데이터베이스 B에 있는 테이블 B.

이 경우 "select A.id,B.id from A left Join B on ~~;"을 실행하는 것은 불가능하지만 비즈니스 요구 사항은 불변이고 데이터베이스 설계도 불변이므로 내 공 아프다. .

해결책: 머신 A의 데이터베이스 A에 테이블 B를 만듭니다. . .

물론 농담이 아니고 MySQL의 페더레이션 엔진을 기반으로 한 테이블 생성 방식을 사용하고 있습니다.

테이블 생성 문의 예:

CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'

전제 조건: mysql은 페더레이션 엔진을 지원해야 합니다(쇼 엔진을 실행하면 지원 여부를 확인할 수 있습니다).

FEDERATED 엔진이 있지만 지원이 NO인 경우 mysql설치이 엔진이 활성화되어 있지 않다는 의미입니다. my.cnf 파일 끝으로 가서 federated 줄을 추가하세요.

전혀 작동하지 않는 경우 FEDERATED 라인이 없다면 mysql에 이 엔진이 설치되어 있지 않다는 의미이므로 즐겁게 플레이할 수 없다는 뜻입니다. 완료하려면 다음 작업이 비교적 크고 어떻게 해야 할지 모르겠습니다.

설명: FEDERATED 엔진을 통해 생성된 테이블에는 로컬 테이블 정의 파일만 있고 데이터 파일은 원격에 존재합니다. 이 엔진을 통해 Oracle의 DBLINK와 유사한 원격 데이터 액세스 기능을 구현할 수 있습니다. 즉, 이 테이블 생성 방법은 데이터베이스 A에 테이블 B의 테이블 구조 파일만 생성합니다. 테이블의 index, 데이터 및 기타 파일은 여전히 ​​머신 B의 데이터베이스 B에 있으며 이는 단지 생성하는 것과 같습니다. 데이터베이스 A에 있습니다. 테이블 B에 대한 바로가기입니다.

결과적으로 계란은 더 이상 아프지 않습니다. .

몇 가지 참고 사항:

1. 로컬 테이블 구조는 원격 테이블 구조와 정확히 동일해야 합니다.

2. 현재 원격 데이터베이스는 MySQL로 제한되어 있습니다

3. 트랜잭션은 지원되지 않습니다

4. 테이블 구조 수정은 지원되지 않습니다

다른 네티즌의 추가 의견:

CREATE TABLE IF NOT EXISTS `logintoken` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` char(1) NOT NULL DEFAULT '0',
`loginName` varchar(20) DEFAULT NULL,
`token` varchar(2000) DEFAULT NULL,
`tokenExpiredTime` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.5.102:3306/zysso/logintoken';

원격 5.12의 logintoken 테이블을 사용하려면 5.12

에서는 FEDERATED를 직접 활성화할 필요가 없습니다.

위 내용은 MySQL의 데이터베이스 간 관련 쿼리 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.