SQL Server 서로 다른 DB 테이블 조인 방법
- Database
- 2022. 9. 20.
테이블이 서로 다른 데이터베이스에 있더라도 동일한 컬럼을 기준으로 테이블을 조인해서 조회할 수 있습니다.
JOIN
SQL 서버에서 서로 다른 두 데이터베이스의 테이블을 조인할 때 아래의 구문을 주로 사용합니다.
SELECT
tb_1.*,
tb_2.*
FROM [database_1].[table_schema].[table_name_1] tb_1
JOIN [database_2].[table_schema].[table_name_2] tb_2 ON tb_1.id = tb_2.id
tb_1과 tb_2는 별칭입니다. 보기 편하게 줄이기 위해 사용하는 겁니다. 테이블 안에서도 특정 컬럼을 지칭할 때 테이블명.컬럼명
처럼 사용하듯이 테이블의 상위 개념인 데이터베이스 역시 동일하게 .
을 사용합니다. 데이터베이스명.테이블명
LEFT JOIN 예시
database_1에는 products라는 테이블이 있습니다.
[products]
product_id (PK) | product_name |
---|---|
1 | Laptop |
2 | Tablet |
3 | Monitor |
4 | Printer |
5 | Keyboard |
database_2에는 prices라는 테이블이 있습니다.
[prices]
product_id (PK) | product_price |
---|---|
1 | 1200 |
2 | 300 |
3 | 500 |
4 | 150 |
5 | 80 |
두 테이블은 서로 다른 데이터베이스에 있으나, product_id라는 기본키(Primary Key)를 가지고 있습니다. 이를 기준으로 조인하면 됩니다. 서로 다른 데이터베이스의 테이블을 조인할 땐 DB명, 테이블 스키마, 테이블명을 명시해야 합니다.
LEFT JOIN은 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 일치하는 항목이 없으면 오른쪽의 결과는 NULL이 나옵니다. 이 예시에선 완벽하게 매칭 되기 때문에 NULL 값은 나오지 않습니다.
SELECT
tb_1.*,
tb_2.*
FROM [database_1].[dbo].[products] tb_1
LEFT JOIN [database_2].[dbo].[prices] tb_2 ON tb_1.product_id = tb_2.product_id
[결과]
product_id | product_name | product_id | product_price |
---|---|---|---|
1 | Laptop | 1 | 1200 |
2 | Tablet | 2 | 300 |
3 | Monitor | 3 | 500 |
4 | Printer | 4 | 150 |
5 | Keyboard | 5 | 80 |
반응형
'Database' 카테고리의 다른 글
SQL, AND OR (NOT) IN 연산자 사용 방법 (0) | 2022.11.08 |
---|---|
SQL UNION 사용 방법 (조회 결과 병합) (0) | 2022.10.04 |
RDBMS vs NoSQL 차이 (NoSQL 사용 이유) (0) | 2022.09.04 |
DB 스키마란? (관계형 데이터베이스 구조) (0) | 2022.09.03 |
MYSQL, character set 변경 방법 (데이터베이스, 테이블) (0) | 2022.08.14 |