docs/sql-reference/statements/attach-database.mdx
The ATTACH DATABASE statement adds another database file to the current connection under a schema name. Once attached, tables in the external database can be queried alongside tables in the main database.
ATTACH [DATABASE] filename AS schema-name;
ATTACH opens the database file at filename and makes its tables accessible through the given schema-name. Tables in the attached database are referenced as schema-name.table-name.
| Clause | Description |
|---|---|
DATABASE | Optional keyword. Has no effect on behavior. |
filename | A string expression that evaluates to the path of the database file to attach. Use ':memory:' to attach an in-memory database. |
schema-name | The name used to qualify table references from the attached database. This name must be unique among all attached databases on the connection. |
Every connection has a built-in schema named main for its primary database. The names main and temp are reserved and cannot be used as schema names for attached databases.
-- 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;