본문 바로가기
WIKI 기술 지식 베이스

ATTACH DATABASE

원문 보기 위키 갱신

ATTACH DATABASE 문은 현재 연결에 다른 데이터베이스 파일을 스키마 이름으로 붙여요. 붙인 뒤에는 메인 데이터베이스의 테이블과 나란히 외부 데이터베이스의 테이블을 조회할 수 있어요.

출처: 문서

본문

ATTACH DATABASE 문은 현재 연결에 다른 데이터베이스 파일을 스키마 이름 아래 추가해요. 일단 붙이면, 외부 데이터베이스의 테이블을 메인 데이터베이스의 테이블과 함께 조회할 수 있어요.

문법

ATTACH [DATABASE] filename AS schema-name;

설명

ATTACH는 filename 위치의 데이터베이스 파일을 열고, 그 테이블들을 지정한 schema-name으로 접근할 수 있게 해줘요. 붙은 데이터베이스의 테이블은 schema-name.table-name으로 참조해요.

절

절 설명
DATABASE 선택 키워드. 동작에는 영향이 없어요.
filename 붙일 데이터베이스 파일 경로로 평가되는 문자열 표현식. ':memory:'를 쓰면 인메모리 데이터베이스를 붙여요.
schema-name 붙은 데이터베이스의 테이블 참조를 한정하는 데 쓰는 이름. 이 이름은 연결에 붙은 모든 데이터베이스 중에서 고유해야 해요.

모든 연결에는 기본 데이터베이스를 위한 main이라는 내장 스키마가 있어요. main과 temp 이름은 예약어라서, 붙는 데이터베이스의 스키마 이름으로 쓸 수 없어요.

이 기능은 실험적이며 사용 전에 [활성화](/sql-reference/experimental-features)해야 해요. 붙은 데이터베이스는 읽기와 쓰기 연산(INSERT, UPDATE, DELETE, CREATE TABLE 등)을 모두 지원해요. 붙은 데이터베이스의 저널 모드는 메인 데이터베이스의 저널 모드와 일치해야 해요 (둘 다 WAL이거나 둘 다 MVCC).

예제

외부 데이터베이스 붙이고 조회하기

-- Attach another database file
ATTACH DATABASE 'archive.db' AS archive;

-- Query a table in the attached database
SELECT * FROM archive.events WHERE event_date > '2025-01-01';

데이터베이스 간 쿼리

ATTACH 'customers.db' AS customers_db;

-- Join tables across the main and attached databases
SELECT o.id, o.total, c.name
FROM main.orders o
JOIN customers_db.customers c ON o.customer_id = c.id;

인메모리 데이터베이스 붙이기

ATTACH ':memory:' AS scratch;

더 알아보기 (Learn more)

  • DETACH DATABASE - 붙은 데이터베이스 떼기
  • SELECT - 데이터베이스를 넘나드는 테이블 조회