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 이름은 예약어라서, 붙는 데이터베이스의 스키마 이름으로 쓸 수 없어요.
예제
외부 데이터베이스 붙이고 조회하기
-- 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 - 데이터베이스를 넘나드는 테이블 조회