SQLite allows you to attach multiple databases to a single database connection. This allows you to access and query tables across multiple database files. The ATTACH DATABASE statement is used to attach a database.
To detach or unattach a database that was previously attached, you use the DETACH DATABASE
statement.
Syntax
The syntax for detaching a database is:
DETACH DATABASE database_name;
Where database_name
is the name that was given to the attached database when it was attached.
Example
To demonstrate, first we will attach a database second_db.sqlite
to our connection:
ATTACH DATABASE 'second_db.sqlite' AS 'second';
This attaches second_db.sqlite
and gives it the alias second
for queries.
We can confirm it is attached by querying the sqlite_master table:
SELECT name FROM sqlite_master WHERE type='table' AND name='table1';
Which would return:
table1
Since there is a table table1
in second_db.sqlite
.
Now to detach this database, we run:
DETACH DATABASE 'second';
If we try querying table1
again, we will get an error since the database is no longer attached.
Detaching All Attached Databases
You can also detach all attached databases at once with:
DETACH DATABASE;
This will detach every database that was previously attached to the connection.
Reattaching Databases
To reattach a previously detached database, just use the ATTACH DATABASE statement again. The database file path and alias need to match the original attachment.
For example, to reattach our second_db.sqlite
, we would run:
ATTACH DATABASE 'second_db.sqlite' AS 'second';
Related Articles
- SQLite Drop Table – Removing tables from a database
- SQLite Create Table – Creating new tables
So in summary, the DETACH DATABASE
statement allows you to unattach a previously attached database to your SQLite connection. This removes access to those database tables until the database is reattached again.